Como recuperar dados de um banco de dados com o Edge SQL e as Edge Functions

Veja como recuperar dados de um banco de dados existente com o Edge SQL e as Edge Functions.


Requisitos


Criando um banco de dados e adicionando uma tabela

  1. Crie um banco de dados executando o seguinte cURL:
curl -X POST https://api.azion.com/v4/edge_sql/databases \
-H "Authorization: Token {{token}}" \
-H "Content-Type: application/json" \
-d '{
"name": "mydatabase"
}'
  1. Adicione uma tabela nomeada users:
curl -X POST 'https://api.azion.com/v4/edge_sql/databases/{{db_id}}/query' \
-H 'Authorization: Token {{token}}' \
-H 'Content-Type: application/json' \
-d '{
"statements": [
"CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL);"
]
}'
  1. Alimente a tabela com dados:
curl -X POST https://api.azion.com/v4/edge_sql/databases/{{db_id}}/query \
-H "Authorization: Token {{token}}" \
-H "Content-Type: application/json" \
-d '{
"statements": [
"INSERT INTO users VALUES (1, '\''user 1'\'');",
"INSERT INTO users VALUES (2, '\''user 2'\'');",
"INSERT INTO users VALUES (3, '\''user 3'\'');"
]
}'

Agora, o DB está criado e preenchido com linhas.


Criando uma edge function para se comunicar com o Edge SQL

  1. Acesse o Console da Azion.
  2. No canto superior esquerdo, selecione Edge Functions na seção Edge Libraries.
  3. Clique no botão + Edge Function.
  4. Escolha um nome para sua função.
  5. Exclua a função placeholder que está dentro do editor de código.
  6. Cole o seguinte código:
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))
);

Esta edge function foi criada para se comunicar com o Edge SQL. Agora, é necessário instanciar esta função em uma edge application em execução:

ir para como instanciar edge functions na sua aplicação

Contribuidores