Há uma extensão para cada tipo de base de dados: awful-postgresql, awful-sqlite3 e awful-sql-de-lite. No caso de SQLite3, pode-se optar por usar tanto a extensão sqlite3 ou sql-de-lite (duas extensões diferentes para acesso a bases SQLite3).
A forma de acesso a bases de dados continua praticamente a mesma: através do procedimento
$db
, o qual faz uso das facilidades oferecidas por awful (conexão transparente, fechamento automático). A única diferença é que agora é necessário carregar a extensão relativa ao tipo de base de dados que pretende-se acessar (e.g., (use awful awful-postgresql)
) e usar enable-db
como um procedimento sem argumentos, não um parâmetro com argumento booleano, como antes.Abaixo está um exemplo completo de uma aplicação que gera uma página HTML com uma tabela contendo dados de nome e endereço da tabela
users
de uma base de dados PostgreSQL: (use awful awful-sql-de-lite html-utils)
(enable-db)
(db-credentials "db.db")
(define-page (main-page-path)
(lambda ()
(tabularize ($db "select name, address from users"))))
Para publicar esta página, basta executar (supondo que o código acima está no arquivo
users.scm
):$ awful users.scm
(ficará disponível em
http://localhost:8080
).Se um dia for necessário migrar essa base de dados para PostgreSQL, basta usar
(use awful-postgresl)
em vez de (use awful-sql-de-lite)
e ajustar a configuração de credenciais para acesso ao banco (no caso de SQLite3, a credencial é o caminho para o arquivo com a base de dados). Se a estrutura da base de dados não for modificada, e se forem usadas consultas SQL portáveis, o código Scheme não precisará ser alterado.Opcionalmente, a página pode ser compilada:
$ csc -s users.scm
$ awful users.so
Simples assim. :-)
Nenhum comentário:
Postar um comentário