Visão Geral
Dado é um pacote que oferece facilidades implementadas sobre objetos de conexão da LuaSQL. Seus principais objetivos são:
- mensagens de erro melhores,
- iteradores para acessar os resultados, e
- mais homogeneidade em algumas operações comumente usadas sobre bancos de dados.
Dado é software livre e usa a mesma licença de Lua.
Abstrações sobre objetos
O pacote também contém um módulo de objetos que provê um meio de definir classes e objetos que representem linhas de tabelas do banco com um esforço mínimo. Dado não impõe um sistema de classes, ele sugere apenas um esquema com herança simples:
- objetos com recuperação automática de atributos do banco de dados
- métodos diferentes para a criação de objetos e para a definição de classes
O mecanismo default usa classes para representar tabelas do banco e instâncias para representar linhas de tabelas do banco. Entretanto é fácil definir atributos que não sejam relacionados com colunas de tabelas, ou classes que não sejam relacionadas com tabelas únicas.
Status
A versão atual é a 1.8.3.
Ela foi desenvolvida para Lua 5.1 e Lua 5.2.
Esta versão deve funcionar também em Lua 5.3, embora apenas os módulos dado.sql
e table.extra
tenham sido testados (os outros módulos dependem da LuaSQL, que ainda não estava disponível para esta versão da linguagem no lançamento desta biblioteca).
Download
Dado pode ser obtida de sua própria página.
Instalação
Dado é um conjunto de módulos para Lua 5 (compatível com todas as versões de Lua 5.X) que deve ser instalado no seu LUA_PATH, respeitando a estrutura de diretórios da pasta src
do arquivo de distribuição.
LuaRocks pode ser usado para instalar o pacote, já que este é também distribuído como um rock.
Manual
Não há um manual de referência. A API é documentada através do LDoc e só está disponível em inglês.
Histórico
- [5/abr/2017] Lançamento da versão 1.8.3
- Função
daod.sql.quote
passa a tratar números do mesmo jeito que trata booleanos: ambos passam a ser representados como constantes do banco, i.e. convertidos para strings e colocados entre parênteses duplos - Versão testada com Lua sem coerção automática (contribuição de François Perrad)
- Função
- [4/abr/2017] Lançamento da versão 1.8.2
- Reimplementação da função
table.extra.fullconcat
: ela assume que a tabela recebida tem chaves e valores apropriados (contribuição de François Perrad) - Adaptação da implementação da função
table.extra.twostr
(contribuição de François Perrad)
- Reimplementação da função
- [16/mar/2017] Lançamento da versão 1.8.1
Melhoria na funçãotable.extra.fullconcat
: força a conversão dos elementos da tabela em strings por default (contribuição de François Perrad) - [22/feb/2017] Lançamento da versão 1.8
Acréscimo da funçãosql.quotedconcat
- [4/dez/2015] Lançamento da versão 1.7.1
Pequenas correções nas variáveis _VERSION de cada módulo. - [29/aug/2015] Lançamento da versão 1.7
select
agora aceita uma tabela como o valor do parâmetromode
, indicanto quemode
deve ser a e o resultado da consulta deve ser armazenado na tabela dada- Correção de bug em
sql.quote
: valores booleanos passam a ser representados como outras constantes do banco, i.e. convertidos para strings e colocados entre parênteses duplos - Correção de bug em
sql.isinteger
: valores fracionários eram aceitos incorretamente - Correção de bug em
table.extra.twostr
: valores booleanos não estavam sendo corretamente serializados
- [31/mar/2015] Lançamento da versão 1.6
sql.quote
passa a aceitar booleanos como valores a serem repassados para o banco de dados; valores desse tipo não recebem aspas como as strings e passam a se comportar como os números - [15/oct/2013] Lançamento da versão 1.5.2
Correção de bug na funçãosql.quote
: ela não coloca aspas em strings formadas por parênteses duplos balanceados, como((NULL))
ou((select col from tab where cond))
; ela não coloca aspas em números (embora coloque aspas em strings contendo números) - [4/oct/2013] Lançamento da versão 1.5.1
sql.escape
agora segue estritamente o padrão SQL: não tenta mais escapar qualquer coisa, apenas o delimitador de strings '; além disso, não remove três caracteres especiais: TAB (\t
ou\9
), LINE FEED (\n
ou\10
) e CARRIAGE RETURN (\r
ou\13
)sql.quote
NÃO coloca aspas em números (embora coloque aspas em strings que contenham dígitos, como '12') NEM em strings formadas por parênteses balanceados dentro dos quais exista: apenas um identificador (sem dígitos); ou uma string contendo 'select' como substringsql.insert
passa a aceitar uma única string como argumento, contendo todo o comando SQL (exceto as duas primeira palavras:insert into
)
- [23/jan/2013] Lançamento da versão 1.4.3
Melhoria na funçãosql.escape
: caracteres com códigos < 32 passam a ser removidos, para evitar problemas na geração de SQL - [13/nov/2012] Lançamento da versão 1.4.2
- Reimplementação para tornar-se compatível com Lua 5.2.
- Melhoria na função
sql.escape
: terceiro parâmetro passa a ser um padrão de substituição
- [06/jun/2011] Lançamento da versão 1.4
Limpeza de funções não usadas:arraytorecord
,invert
,copyto
ecycle
do módulotable.extra
e o módulostring.extra
completamente - [14/dez/2010] Lançamento da versão 1.3.1
Correção de bug na funçãosql.quote
: não estava colocando aspas em strings que começam e terminam com parênteses que não casam - [06/ago/2010] Lançamento da versão 1.3.0
- Acréscimo da função de conveniência
sql.isinteger
- Acréscimo da função de depuração
table.extra.pfullconcat
- Mudança na hospedagem
- Acréscimo da função de conveniência
- [10/jun/2010] Lançamento da versão 1.2.0
- Acréscimo da função de conveniência
sql.AND
- Acréscimo de documentação em português
- Acréscimo da função de conveniência
- [05/out/2009] Lançamento da versão 1.1.0
- Acréscimo da função
wrap_connection
- Remoção da biblioteca
check
- Implantação via LuaRocks
- Acréscimo da função
- [29/set/2009] Lançamento da versão 1.0.1
Correção de bug na funçãosql.quote
- [20/abr/2008] Lançamento da versão 1.0
Créditos
Dado foi projetada por Tomás Guisasola e Eduardo Quintão com muitas contribuições importantes de Pedro Maia, Roberto Ierusalimschy, André Carregal, Raphael Pithan, Maurício Bonfim e Carla Ourofino. O logo foi criado por Carla Ourofino.
Dado foi desenvolvida para a PUC-Rio que detém o copyright. Foi implementada por Tomás Guisasola.
Fale conosco
Para maiores informações: fale conosco. Comentários são bem vindos!