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.
Saiba mais sobre o Edge SQLRequisitos
Criando um banco de dados e adicionando uma tabela
- 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"}'
- 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);" ]}'
- 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
- Acesse o Console da Azion.
- No canto superior esquerdo, selecione Edge Functions na seção Edge Libraries.
- Clique no botão + Edge Function.
- Escolha um nome para sua função.
- Exclua a função placeholder que está dentro do editor de código.
- 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çãoContribuidores