CQLBr Framework for Dar/Flutter (Firebird)
Criteria Query Language Brasil (Dart/Flutter)
CQLBr é um framework opensource que provê escritas gerando o script SQL, através de uma interface, permitindo mapear de forma orientada a objeto, toda sintaxe de comandos SQL (SELECT, INSERT, UPDATE e DELETE), para banco de dados relacional.
Durante o desenvolvimento de software, é evidente a preocupação em que se tem em aumentar a produtividade e manter a compatibilidade entre os possíveis bancos que um sistema pode usar. No que se refere a sintaxe de banco de dados, temos em alguns casos, incompatibilidades entre comandos SQL, exigindo assim, a necessidade de um maior controle na escrita de cada banco, e foi para ajudar nesse ponto crítico que CQLBr nasceu, ele foi projetado para que a escrita de querys seja única, de forma funcional e orientada a objeto, possibilitando assim a mesma escrita feita pelo framework, gerar querys diferentes conforme o banco selecionado, o qual pode ser mudado de forma muito simples, bastando selecionar um dos modelos implementados no CQLBr Framework, sem ter que re-faturar diversas querys espalhadas pelas milhares de linhas de código.
COMO COMEÇAR A USAR
CQLBr cqlbr = CQLBr(select: CQLSelectFirebird());
TODO: Ao instâncias o CQL, deve-se injetar a ele o nodelo do banco que se vai usar, isso poderá ser feito pode parâmetro em seu sistema, configurando qual modelo será injetado.
SELECT
Expect : "SELECT ID_CLIENTE, NOME_CLIENTE, (CASE TIPO_CLIENTE WHEN 0 THEN 'FISICA' WHEN 1 THEN 'JURIDICA' ELSE 'PRODUTOR' END) AS TIPO_PESSOA FROM CLIENTES");
String result = cqlbr
.select$()
.column$('ID_CLIENTE')
.column$('NOME_CLIENTE')
.column$('TIPO_CLIENTE')
.case$(null)
.when$('0').then$(Fun.q('FISICA'))
.when$('1').then$(Fun.q('JURIDICA'))
.else$(Fun.q('PRODUTOR'))
.end$()
.as$('TIPO_PESSOA')
.from$('CLIENTES')
.asString();
INSERT
Expect : "INSERT INTO CLIENTES (ID_CLIENTE, NOME_CLIENTE) VALUES (1, 'MyName')";
String result = cqlbr
.insert$()
.into$('CLIENTES')
.set$('ID_CLEINTE', 1)
.set$('NOME_CLIENTE', 'MyName')
.asString();
UPDATE
Expect : "UPDATE CLIENTES SET ID_CLIENTE = 2, NOME_CLIENTE = 'MyName' WHERE ID_CLIENTE = 1";
String result = cqlbr
.update$()
.set$('ID_CLEINTE', 2)
.set$('NOME_CLIENTE', 'MyName')
.where$('ID_CLIENTE = 1')
.asString();
DELETE
Expect : "DELETE FROM CLIENTES WHERE ID_CLIENTE = 1";
String result = cqlbr
.delete$()
.from$('CLIENTES')
.where$('ID_CLIENTE = 1')
.asString();
Additional information
TODO: multi-database SQL syntax using object orientation, now in flutter.