Pular para conteúdo

Referência da API

Esta seção detalha as principais classes, interfaces e atributos do BridgeFrameWork.

1. Conexão (IConnection)

A interface IConnection (uConnection.Interfaces.pas) é responsável por abstrair a comunicação com o banco de dados.

Método Descrição
function getConnection: TFDConnection Retorna a instância nativa do TFDConnection do FireDAC.
function CreateConnection: TFDConnection Cria e retorna uma nova instância de conexão (Factory).
function CreateDataSet(const ASQLValue: string): TFDQuery Cria um TFDQuery já configurado com o SQL informado.
function CreateTempTable(Sender: TFDQuery): TFDMemTable Cria uma tabela em memória (TFDMemTable) a partir dos dados de uma query. Útil para desconectar dados do banco.
procedure Execute(const ASQLValue: String) Executa um comando SQL que não retorna dados (INSERT, UPDATE, DELETE).
procedure BeginTransaction Inicia uma nova transação no banco de dados.
procedure CommitTransaction Confirma a transação ativa.
procedure RollbackTransaction Desfaz a transação ativa.
function InTransaction: Boolean Verifica se existe uma transação aberta.
function getId(const ATable: string): Integer Retorna o próximo ID disponível para a tabela (gerador/sequence).
function getSeq(const ATable, AColumnName: string): Variant Retorna o próximo valor de uma sequence específica.

2. Atributos (uMetaData.Attributes)

Os atributos decoram suas classes para definir como o ORM deve mapeá-las para o banco de dados.

Mapeamento de Entidade

  • [Entity(TableName: string)] Marca a classe como uma entidade persistível no banco.
    • TableName: Nome da tabela no banco de dados.
    • Exemplo: [Entity('TB_CLIENTE')]

Mapeamento de Propriedades

  • [Column(ColumnName: string, Size: Integer = 0, Nullable: Boolean = True)] Mapeia a propriedade para uma coluna.

    • ColumnName: Nome da coluna no banco.
    • Size: Tamanho do campo (ex: 100 para Varchar(100)).
    • Nullable: Se aceita nulo (False = Required).
    • Exemplo: [Column('NOME', 60, False)]
  • [Id(AutoIncrement: Boolean = True)] Identifica a propriedade que é Chave Primária.

    • AutoIncrement: Se o banco gera o ID automaticamente.
    • Exemplo: [Id(True)]
  • [Ignore] A propriedade será ignorada pelo ORM (não será persistida).

Relacionamentos (Lazy Loading)

  • [BelongsTo(FKColumn: string)] Define um relacionamento N:1 (ex: Pedido -> Cliente).

    • FKColumn: Nome da coluna de chave estrangeira na tabela atual.
    • Exemplo: [BelongsTo('ID_CLIENTE')]
  • [HasMany(FKColumn: string)] Define um relacionamento 1:N (ex: Cliente -> Pedidos).

    • FKColumn: Nome da coluna de chave estrangeira na tabela filha.
    • Exemplo: [HasMany('ID_CLIENTE')]
  • [SoftDelete(FieldName: string, DeleteValue: Variant, RestoreValue: Variant)] Ativa a "exclusão lógica". Ao excluir, o sistema apenas atualiza o campo indicado.


3. Model (IModel / TBaseModel)

O TBaseModel implementa a interface IModel e reside em uBase.Model.pas. Ele é responsável pela execução direta das operações no banco de dados.

Métodos Principais

Método Descrição
procedure Insert(Sender: TObject) Insere o objeto no banco de dados.
procedure Update(Sender: TObject) Atualiza o registro correspondente ao objeto.
procedure Delete(Sender: TObject) Exclui o registro (ou executa Soft Delete se configurado).
function Find(ATableName: string; AId: Integer): TFDQuery Busca um registro pelo ID retornando um DataSet.
function FindAll(ATableName: string; AParams: TDictionary): TFDQuery Busca registros com filtros dinâmicos.
function FindCustom(ASQL: string): TFDMemTable Executa um SQL livre e retorna um TFDMemTable. Ideal para relatórios e grids.
function ExistsFieldValue(ATable, AField, AValue: string): Boolean Verifica se existe algum registro com o valor informado no campo.

4. Controller (IController / TBaseController)

O TBaseController (uBase.Controller.pas) contém as regras de negócio e validações. É a camada que a View deve consumir.

Métodos de CRUD

Método Descrição
function Insert(Sender: TObject): TValidate Valida e insere um objeto. Retorna TValidate (Sucess/Message).
function Update(Sender: TObject): TValidate Valida e atualiza um objeto.
function Delete(Sender: TObject): TValidate Valida e exclui um objeto.
function Save(Sender: TObject): TValidate "Upsert": Insere se o ID for vazio/zero, ou Atualiza se já existir.

Métodos de Leitura

Método Descrição
function Load(Sender: TObject; AId: Integer): Boolean Carrega os dados de um ID para a instância do objeto passado. Retorna True se encontrou.
function LoadFromDataSet<T>(AList; ADataSet): Boolean Converte um TDataSet (origem) para uma TObjectList<T> (destino).
function Find<T>(AId: Integer): TFDQuery Busca e retorna um TFDQuery para um ID específico.

Validação

O Controller executa automaticamente validações baseadas nos atributos antes de persistir: * Campos Obrigatórios (Nullable=False). * Tamanho de Strings (Size).

Soft Delete

Método Descrição
function SoftDelete(Sender: TObject): TValidate Executa a exclusão lógica (se configurada).
function Restore(Sender: TObject): TValidate Restaura um registro excluído logicamente.