Edge SQL API

A Edge SQL API fornece uma interface para interação com banco de dados no Edge SQL a partir de Edge Functions executadas na Plataforma de Edge da Azion. Essa documentação destaca os componentes chaves da API e fornece um exemplo de código.


Database

Cria uma conexão com um banco de dados no Edge SQL para sua aplicação. Retorna um objeto do tipo Connection

Métodos

MétodoDescriçãoAssinaturaParâmetrosRetorno
OpenAbre uma conexão com a réplica de leitura de um banco de dados EdgeSQLstatic async open(name)name: stringConnection

Connection

Representa o canal de comunicação com um banco de dados EdgeSQL específico. Este objeto pode ser obtido ao abrir um banco de dados.

Métodos

MétodoDescriçãoAssinaturaParâmetrosRetorno
ExecuteExecuta um comando SQLasync execute(sql,params)sql: <string>
- '?' parâmetro posicional
- :<param_name>
params:
- Array de valores posicionais
- Dicionário de valores
-
QueryExecuta um comando SQLasync query(sql, params)sql: <string>
- '?' parâmetro posicional
- :<param_name>
params:
- Array de valores posicionais
- Dicionário de valores
Rows
PreparePrepara um comando SQL para execução a partir da combinação do comando e parâmetrosasync prepare(sql,params)sql: <string>
- '?' parâmetro posicional
- :<param_name>
params:
- Array de valores posicionais
- Dicionário de valores
Statement

Statement

Uma abstração de um comando SQL, o objeto Statement permite a execução do comando representado. Ele pode ser criado a partir de um comando Connection.prepare.

Métodos

MétodoDescriçãoAssinaturaParâmetrosRetorno
ExecuteExecuta um comando SQLasync execute(sql, params)sql: <string>
- '?' parâmetro posicional
- :<param_name>
params:
- Array de valores posicionais
- Dicionário de valores
-
QueryExecuta um comando SQLasync query(sql, params)sql: <string>
- '?' parâmetro posicional
- :<param_name>
params:
- Array de valores posicionais
- Dicionário de valores
Rows

Atributos

AtributoDescriçãoAssinaturaParâmetrosRetorno
parameterCountRetorna o número de parâmetros relacionados do statementparameterCount()-int32
parameterNameRetorna o nome do parâmetroparameterName(index)index: int32String
columnsRetorna a lista de colunas relacionadas ao statementcolumns()-Object

Rows

Representa o conjunto de resultados retornados por uma consulta SQL.

Métodos

MétodoDescriçãoAssinaturaParâmetrosRetorno
nextRetorna a próxima linha da resposta da consultaasync next()-<Row> ou null

Atributos

AtributoDescriçãoAssinaturaParâmetrosRetorno
columnCountRetorna o número de colunas do resultado da consultacolumnCount()-int32
columnNameRetorna o nome da colunaparameterName(index)index: int32String
columnTypeRetorna o tipo da colunacolumnType(index)index: int32int32

Row

Representa o conjunto de atributos e valores em uma linha de um conjunto de resultados.

Atributos

AtributoDescriçãoAssinaturaParâmetrosRetorno
columnNameRetorna o nome da colunacolumnName(index)index: int32String
columnTypeRetorna o tipo da colunaColumnType(index)index: int32int32
getValueRetorna o valor do atributogetValue(index)index: int32Valor
getStringRetorna o valor do atributo como stringgetString(index)index: int32String

Exemplo de código

O exemplo de código abaixo apresenta uma forma de interação com um banco de dados e recuperação de dados de uma tabela. Este exemplo utiliza um banco de dados chamado mydatabase e a tabela users.

import { Database } from "azion:sql";
async function db_query() {
let connection = await Database.open("mydatabase");
let rows = await connection.query("select * from users");
let column_count = rows.columnCount();
let column_names = [];
for (let i = 0; i < column_count; i++) {
column_names.push(rows.columnName(i));
}
let response_lines = [];
response_lines.push(column_names.join("|"));
let row = await rows.next();
while (row) {
let row_items = [];
for (let i = 0; i < column_count; i++) {
row_items.push(row.getString(i));
}
response_lines.push(row_items.join("|"));
row = await rows.next();
}
const response_text = response_lines.join("\n");
return response_text;
}
async function handle_request(request) {
if (request.method != "GET") {
return new Response("Método não permitido", { status: 405 });
}
try {
return new Response(await db_query());
} catch (e) {
console.log(e.message, e.stack);
return new Response(e.message, { status: 500 });
}
}
addEventListener("fetch", (event) =>
event.respondWith(handle_request(event.request))
);

Considerando que o banco de dados e a tabela já existem, a saída seria:

id|name
1|User1
2|User2
3|User3
4|User4

Contribuidores