Configuração e constantes
Referência operacional derivada do repositório: manifesto Boss, tipo de driver e condicionais de compilação. Não substitui a leitura do código em Source/Core/ quando o comportamento for ambíguo.
Pacote Boss
| Campo | Valor (raiz do repositório) |
|---|---|
| Nome do pacote | FluentSQL |
| Instalação em projeto consumidor | boss install FluentSQL |
Caminho das units (mainsrc) | ./Source |
Versão publicada no manifesto: ver boss.json na raiz do repositório.
Constante de dialeto (CreateFluentSQL / TCQ)
O primeiro argumento da fábrica é do tipo TFluentSQLDriver, definido em FluentSQL.Interfaces.pas:
A enum tem 9 valores, todos com implementação real em Source/Drivers/:
| Constante | Uso típico | Ativo por padrão no FluentSQL.inc |
|---|---|---|
dbnMSSQL | Microsoft SQL Server | ✅ |
dbnMySQL | MySQL | ✅ |
dbnFirebird | Firebird | ✅ |
dbnSQLite | SQLite | ✅ |
dbnInterbase | InterBase | ❌ |
dbnDB2 | IBM DB2 | ❌ |
dbnOracle | Oracle | ✅ |
dbnPostgreSQL | PostgreSQL | ✅ |
dbnMongoDB | Serialização orientada a MQL (estado do driver conforme roadmap) | ✅ |
O registo concreto de serializadores, Select e funções por dialeto ocorre em FluentSQL.Register.pas (nem todo dialeto da enum precisa estar ativo na sua build — ver a coluna acima e a secção seguinte).
Alteração incompatível: até 1.5.1 a enum tinha 15 valores. Os seis seguintes foram removidos por nunca terem tido implementação alguma — as units
FluentSQL.Serialize*,FluentSQL.Select*eFluentSQL.Functions*correspondentes não existiam no repositório, e qualquer chamada com esses valores terminava emEAccessViolation:dbnInformix,dbnADS,dbnASA,dbnAbsoluteDB,dbnElevateDB,dbnNexusDB. Código que nomeie qualquer um deles deixa de compilar (E2003 Undeclared identifier); não há substituto, escolha um dos 9 dialetos acima. VerCHANGELOG.md, secção [Unreleased].
Search path (Delphi / Lazarus)
Inclua no path do projeto, no mínimo:
Source/Core/Source/Drivers/(ou apenas os drivers que você compila)
Quando usar Boss como dependência, o gestor costuma ajustar caminhos conforme a configuração do seu projeto pai.
Compilação condicional e registo de drivers
Alguns drivers só entram no registo global se o símbolo correto estiver definido antes da cadeia de uses que carrega o núcleo (por exemplo {$DEFINE MSSQL}, ORACLE, DB2, INTERBASE, conforme o seu .dpr e FluentSQL.Register).
Se em runtime aparecer erro de select do dialeto não registrado, veja Erros comuns e a issue #14.
API pública vs nomes legados
| Use | Evite (legado) |
|---|---|
CreateFluentSQL(dbn…) ou TCQ(dbn…) | CQuery, TCQL.New |
uses FluentSQL, FluentSQL.Interfaces | uses CQL, CQL.Interfaces |
| Pacote Boss FluentSQL | CQuery4D, nomes antigos do ecossistema |
Tabela de migração: CHANGELOG.md, entrada [1.0.0].
Cache Distribuído (Redis)
O FluentSQL suporta cache de strings SQL para evitar serializações repetitivas. A configuração é feita através da injeção de um provedor que implemente IFluentSQLCacheProvider (FluentSQL.Cache.Interfaces.pas).
O provedor padrão Redis (TFluentSQLRedisCacheProvider em FluentSQL.Cache.Redis.pas) requer uma função de execução de comandos compatível com o seu driver Redis.
| Método | Finalidade | Padrão |
|---|---|---|
.WithCache(AProvider) | Ativa o cache para a instância da query. | nil (desativado) |
.WithTTL(ASeconds) | Define o tempo de vida da entrada no cache. | 3600 (1 hora) |
Constraints e Chaves Estrangeiras (DDL)
A partir da v1.2.0, o builder DDL suporta metadados estendidos:
- Primary Key:
.PrimaryKey(define chave primária). - Not Null:
.NotNull(obrigatoriedade). - Default Value:
.DefaultValue(AValue)(valor padrão). - Chaves Estrangeiras:
.References(ATable, AColumn)(vínculo com outra tabela).
Variáveis de ambiente
Não há variáveis de ambiente obrigatórias documentadas para o uso da biblioteca em tempo de compilação ou runtime.