Cliente
A biblioteca cliente conecta a um servidor PetraDB em execucao via HTTP.
Instalacao
Seção intitulada “Instalacao”JavaScript / TypeScript
Seção intitulada “JavaScript / TypeScript”npm install @petradb/clientlibraryDependencies += "io.github.edadma" %%% "petradb-client" % "1.5.0"Opcoes de Conexao
Seção intitulada “Opcoes de Conexao”| Opcao | Padrao | Descricao |
|---|---|---|
host | "localhost" | Nome do host do servidor |
port | 5480 | Porta do servidor |
username | — | Nome de usuario para autenticacao Basic |
password | — | Senha para autenticacao Basic |
JavaScript / TypeScript
Seção intitulada “JavaScript / TypeScript”import { Session } from '@petradb/client';
const db = new Session({ host: 'localhost', port: 5480, username: 'admin', password: 'secret',});Uso Stateless
Seção intitulada “Uso Stateless”Sem chamar connect(), cada chamada execute() executa em uma sessao transiente unica no servidor. Este e o modo mais simples — sem sessao para gerenciar.
const [{ rows }] = await db.execute('SELECT * FROM users');console.log(rows);Uso Stateful
Seção intitulada “Uso Stateful”Chame connect() para criar uma sessao no lado do servidor. O ID da sessao e enviado automaticamente com cada chamada execute() subsequente, para que transacoes e estado temporario persistam entre requisicoes.
await db.connect();
await db.execute('BEGIN');await db.execute("INSERT INTO users (name) VALUES ('Alice')");await db.execute('COMMIT');
const [{ rows }] = await db.execute('SELECT * FROM users');console.log(rows);
await db.close();Exemplo Completo
Seção intitulada “Exemplo Completo”import { Session } from '@petradb/client';
const db = new Session({ host: 'localhost', port: 5480 });
await db.connect();
await db.execute(` CREATE TABLE products ( id SERIAL, name TEXT NOT NULL, price NUMERIC(10,2), PRIMARY KEY (id) )`);
await db.execute("INSERT INTO products (name, price) VALUES ('Laptop', 999.99)");await db.execute("INSERT INTO products (name, price) VALUES ('Coffee', 4.50)");
const [{ rows }] = await db.execute('SELECT * FROM products ORDER BY price DESC');console.log(rows);// [{ id: 1, name: 'Laptop', price: 999.99 }, { id: 2, name: 'Coffee', price: 4.5 }]
await db.close();import io.github.edadma.petradb.client.*import scala.concurrent.ExecutionContext.Implicits.global
val session = new Session(SessionOptions( host = "localhost", port = 5480, username = Some("admin"), password = Some("secret"),))Uso Stateless
Seção intitulada “Uso Stateless”for results <- session.execute("SELECT * FROM users")yield results.foreach(println)Uso Stateful
Seção intitulada “Uso Stateful”for _ <- session.connect() _ <- session.execute("BEGIN") _ <- session.execute("INSERT INTO users (name) VALUES ('Alice')") _ <- session.execute("COMMIT") results <- session.execute("SELECT * FROM users") _ <- session.close()yield results.foreach(println)Todos os metodos retornam valores Future. connect() retorna o ID da sessao, execute() retorna Seq[Result] e close() retorna Unit.