FluentSQL

1.5.1Open SourceCRA-ready
Sobre o projeto

Biblioteca de geração de SQL/MQL agnóstica de banco de dados para Delphi e Lazarus. API fluente e orientada a objetos para construir DML (SELECT, INSERT, UPDATE, DELETE) e DDL como strings puras — sem conexão ativa. Suporta Firebird, MySQL, PostgreSQL, MSSQL, SQLite, Oracle e MongoDB (MQL).

Linguagem
DelphiLazarus
Plataformas
🪟Windows🐧Linux🍎macOS🤖Android📱iOS
README do repositóriorecolher

FluentSQL Framework for Delphi & Lazarus

Delphi XE+ Lazarus Compatible License


🇬🇧 English

FluentSQL is a modern, high-performance database-agnostic SQL/MQL script generation library for Delphi and Lazarus. Its core contract is extremely simple: it only emits string — standard SQL scripts (or drivers-specific equivalents like MQL/JSON for MongoDB) through a robust, fluent object-oriented API (classes, interfaces, and method chaining). DML (CRUD) and DDL statements translate purely into parameterized text. There is no active database connection, no server-side execution, no database catalog introspection, and no validation inside this package. It remains completely strings-only by design, making it highly modular and ideal as a dependency for advanced Object-Relational Mappers (such as Janus).

🚀 Key Features

  • Fluent DML & DDL Builder: Construct queries (SELECT, INSERT, UPDATE, DELETE) and schema scripts (CREATE TABLE, ALTER TABLE, indices) using method chaining.
  • Database Engine Independence: Single interface query layer with serialization drivers for Firebird, MySQL, PostgreSQL, MSSQL, Oracle, SQLite, MongoDB (MQL), and more.
  • Parameterization Support: Standardized :pN / ? placeholder mapping utilizing a unified IFluentSQLParams interface.
  • Advanced SQL Construction: Full support for UNION, UNION ALL, INTERSECT statements, and bulk insert optimization (multi-value VALUES / insertMany).
  • Strings-Only by Design: 100% decoupled from active connection components, ensuring lightweight dependencies and zero database-access overhead.

🏛 Compatibility Matrix

Environment / IDE Platform / Compiler Drivers Serializer Dialects Supported
Delphi XE or superior VCL, FMX, Console (Win/Linux/macOS/iOS/Android) ✅ Yes Firebird, MySQL, PG, MSSQL, SQLite, Oracle, Mongo...
Lazarus / FreePascal LCL, Console (Cross-platform) ✅ Yes Firebird, MySQL, PG, MSSQL, SQLite, Oracle, Mongo...

⚙️ Installation

To install using the package manager Boss:

boss install FluentSQL

⚡️ Quick Start

1. DML Query Building (SELECT)

uses
  FluentSQL;

var
  SQL: string;
begin
  SQL := Query(dbnFirebird)
    .Select
    .Column('ID').Column('NOME')
    .From('CLIENTES')
    .Where('ATIVO').Equal(1)
    .AsString;
    
  // SQL = 'SELECT ID, NOME FROM CLIENTES WHERE ATIVO = 1'
end;

2. DDL Schema Definition (CREATE TABLE)

uses
  FluentSQL;

var
  SQL: string;
begin
  SQL := Schema(dbnPostgreSQL)
    .CreateTable('USUARIOS')
    .ColumnInteger('ID').PrimaryKey
    .ColumnVarChar('NOME', 100).NotNull
    .AsString;
    
  // SQL = 'CREATE TABLE USUARIOS (ID INTEGER PRIMARY KEY, NOME VARCHAR(100) NOT NULL)'
end;

🇧🇷 Português

FluentSQL é uma biblioteca moderna e de alta performance para geração de scripts SQL/MQL agnósticos a banco de dados em Delphi e Lazarus. Seu contrato principal é extremamente simples: gerar string — scripts SQL padrão (e, onde o driver for outro formato, texto equivalente, p.ex. MQL/JSON para MongoDB) através de uma API fluente orientada a objetos (classes/interfaces e encadeamento de métodos). Instruções CRUD (DML) e DDL traduzem-se estritamente em textos parametrizados. Não há conexão ativa com banco de dados, nem execução ou leitura de catálogo dentro deste pacote. Ele mantém-se apenas gerador de strings por design, sendo uma dependência ideal para Mapeadores Objeto-Relacionais (como o Janus).

🚀 Recursos Principais

  • Builder Fluente de DML & DDL: Construa consultas completas (SELECT, INSERT, UPDATE, DELETE) e scripts estruturais de schema (CREATE TABLE, ALTER TABLE, índices) de forma fluida.
  • Independência de Dialetos: Única interface geradora com serializadores nativos para Firebird, MySQL, PostgreSQL, MSSQL, Oracle, SQLite, MongoDB (MQL) e outros.
  • Suporte a Parametrização: Mapeamento padronizado de placeholders :pN / ? utilizando a interface unificada IFluentSQLParams.
  • Operações Avançadas: Suporte completo a blocos UNION, UNION ALL, INTERSECT e otimização de inserts em lote (multi-VALUES / insertMany).
  • Geração Apenas de Strings por Design: 100% desacoplado de componentes de conexão ativa, garantindo leveza e ausência de overhead de acesso de dados direto.

🏛 Matriz de Compatibilidade

Ambiente / IDE Plataforma / Compilador Serializador de Drivers Dialetos Suportados
Delphi XE ou superior VCL, FMX, Console (Win/Linux/macOS/iOS/Android) ✅ Sim Firebird, MySQL, PG, MSSQL, SQLite, Oracle, Mongo...
Lazarus / FreePascal LCL, Console (Multiplataforma) ✅ Sim Firebird, MySQL, PG, MSSQL, SQLite, Oracle, Mongo...

⚙️ Instalação

Para instalar usando o gerenciador de pacotes Boss:

boss install FluentSQL

⚡️ Início Rápido

1. Construindo Consultas DML (SELECT)

uses
  FluentSQL;

var
  SQL: string;
begin
  SQL := Query(dbnFirebird)
    .Select
    .Column('ID').Column('NOME')
    .From('CLIENTES')
    .Where('ATIVO').Equal(1)
    .AsString;
    
  // SQL = 'SELECT ID, NOME FROM CLIENTES WHERE ATIVO = 1'
end;

2. Definindo Schemas DDL (CREATE TABLE)

uses
  FluentSQL;

var
  SQL: string;
begin
  SQL := Schema(dbnPostgreSQL)
    .CreateTable('USUARIOS')
    .ColumnInteger('ID').PrimaryKey
    .ColumnVarChar('NOME', 100).NotNull
    .AsString;
    
  // SQL = 'CREATE TABLE USUARIOS (ID INTEGER PRIMARY KEY, NOME VARCHAR(100) NOT NULL)'
end;

Copyright © 2025-2026 Isaque Pinheiro. Licensed under MIT License.