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.


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

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

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é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

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é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
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

Representa o conjunto de resultados retornados por uma consulta SQL.

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

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

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

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