Uso com Scala
Banco de Dados em Memoria
Seção intitulada “Banco de Dados em Memoria”import io.github.edadma.petradb.*import io.github.edadma.petradb.engine.*
given Session = new MemoryDB().connect()
val results = executeSQL(""" CREATE TABLE products ( id SERIAL, name TEXT NOT NULL, price NUMERIC(10,2), category TEXT );
INSERT INTO products (name, price, category) VALUES ('Laptop', 999.99, 'Electronics'), ('Coffee', 4.50, 'Food'), ('Book', 19.99, 'Education');
SELECT category, COUNT(*), AVG(price) FROM products GROUP BY category ORDER BY category;""")
results.foreach(println)Cada instancia MemoryDB e isolada e independente. Todos os dados ficam na memoria.
Banco de Dados Persistente
Seção intitulada “Banco de Dados Persistente”O PetraDB suporta armazenamento duravel seguro contra falhas em JVM e Native via stow.
Criando um Novo Banco de Dados
Seção intitulada “Criando um Novo Banco de Dados”import io.github.edadma.petradb.*import io.github.edadma.petradb.engine.*
val db = PersistentDB.create("mydata.db", 4096)given Session = db.connect()
executeSQL(""" CREATE TABLE users ( id SERIAL, name TEXT NOT NULL, email TEXT, PRIMARY KEY (id) );
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');""")
db.close()Reabrindo um Banco de Dados Existente
Seção intitulada “Reabrindo um Banco de Dados Existente”val db = PersistentDB.open("mydata.db")given Session = db.connect()
val results = executeSQL("SELECT * FROM users")results.foreach(println)
db.close()Todas as tabelas, dados, tipos enum e estado de auto-incremento sao restaurados ao reabrir.
Bancos de dados persistentes usam paginas copy-on-write e cabecalhos com buffer duplo para seguranca contra falhas. Todas as operacoes DDL e DML sao duraveis.
Banco de Dados de Texto
Seção intitulada “Banco de Dados de Texto”TextDB armazena o banco de dados como um arquivo .ptxt editavel por humanos. Carrega na memoria ao abrir e reescreve o arquivo apos cada alteracao. Ideal para desenvolvimento inicial, configuracao e controle de versao.
import io.github.edadma.petradb.*import io.github.edadma.petradb.engine.*
val db = TextDB.open("mydata.ptxt")given Session = db.connect()
executeSQL(""" CREATE TABLE settings (key TEXT, value TEXT); INSERT INTO settings (key, value) VALUES ('theme', 'dark');""")
db.close()Reabra o mesmo arquivo para restaurar todos os dados:
val db = TextDB.open("mydata.ptxt")given Session = db.connect()
val results = executeSQL("SELECT * FROM settings")results.foreach(println)Funciona em JVM e Native. O formato .ptxt e legivel por humanos e amigavel para diff. Use PersistentDB quando precisar de durabilidade segura contra falhas para dados de producao.
Executando SQL
Seção intitulada “Executando SQL”executeSQL(sql) executa um ou mais comandos separados por ponto e virgula e retorna uma Seq[Result].
val results: Seq[Result] = executeSQL("SELECT * FROM users; SELECT * FROM products;")Veja a referencia da API Scala para tipos de resultado, extracao de valores e a API completa.
# Executar testes para todas as plataformassbt test
# Executar apenas testes JavaScriptsbt engineJS/test
# Executar apenas testes JVMsbt engineJVM/test
# Executar apenas testes Nativesbt engineNative/testNotas sobre Plataformas
Seção intitulada “Notas sobre Plataformas”- JVM — thread-safe, integra com Spring Boot, Play Framework, Akka, etc.
- Scala.js — executa em Node.js e navegadores
- Scala Native — compila para executaveis nativos; ideal para ferramentas CLI e sistemas embarcados