db/db library

Camada de banco do Flenx: models declarativos com colunas e relações, geração de migration (MySQL) e config via .env (servidor).

Classes

DbColumn
Coluna de uma tabela. A "notação do banco" do model: tipo, nulo, único, chave primária e chave estrangeira (references, no formato 'tabela.coluna') para relacionar tabelas.
DbConfig
Configuração de conexão ao banco — lida do ambiente (.env), só no servidor. Nunca embuta credenciais no código nem no cliente.
DbModel
Definição declarativa de uma tabela: colunas (com notação de banco) e relações. É a fonte para gerar migration, queries e código Dart/PHP.
DbRegistry
Registro do backend de banco. Você escolhe por DB_PROVIDER (supabase, firebase, rest, jsonl...) e adiciona as credenciais — mesma ideia do pagamento. Provedores novos entram com DbRegistry.register('x', ...).
DbRelation
Relação entre dois models — usada para gerar joins/includes padronizados. Ex.: um pedido belongsTo cliente; um cliente hasMany pedidos.
FirestoreDbExecutor
DbExecutor que persiste no Firebase Firestore (via REST). Mesma interface dos demais. Como o Firestore é NoSQL, há um pequeno mapeamento: cada documento vira um Map com a chave id (o id do documento) somada aos campos. insert devolve o id como int quando numérico (senão 0 — use o id retornado nas listagens).
RestApiDbExecutor
DbExecutor que persiste chamando uma API REST do Flenx (alvo Dart OU PHP — é só apontar a URL). Usa o envelope padrão {success, data, meta} e o contrato CRUD por tabela:
SiteSettings
Acesso (servidor) às configurações do site guardadas em site_settings (registro único, coluna data em JSON). As páginas públicas leem daqui o que o admin editou (ex.: textos da home). Ver settingsModel.
SqlMigrationGenerator
Gera o SQL de criação das tabelas (MySQL) a partir dos DbModel, incluindo chaves primárias e estrangeiras (relações). Roda uma vez.
SupabaseDbExecutor
DbExecutor que persiste no Supabase (via PostgREST). Mesma interface dos demais — basta escolher e adicionar as credenciais.

Enums

RelationKind
Tipo de relacionamento entre tabelas.
SqlType
Tipos de coluna suportados, mapeados para SQL (dialeto MySQL — comum em hospedagem PHP e no alvo Dart).

Constants

categoriesModel → const DbModel
Tabela de categorias do blog/portal (lista curada, editável pelo admin). Inclua em dbModels e use em endpoints CRUD. O slug casa com as páginas de arquivo do blog (/blog/categoria/<slug>); o name é exibido nos menus.
settingsModel → const DbModel
Configurações do site em um único registro (id=1) com a coluna data (JSON). Usado para editar a tela home e opções gerais pelo admin sem código: o admin grava o JSON, e as páginas públicas leem dele. Ver FlenxSettingsPage e SiteSettings.
usersModel → const DbModel
Tabela de usuários do admin (com papel/permissões). Inclua em dbModels para gerar a migration e use em endpoints CRUD. O campo role casa com os papéis de AppRole/AdminPermissions ('Administrador', 'Editor', ...).

Typedefs

DbExecutorFactory = DbExecutor Function(Map<String, String> env, Client? client)
Cria um DbExecutor a partir do ambiente (.env) + client HTTP opcional.