/** * Trigger Operations Module * Handles triggers sync logic */ import type { ILegacySyncOptions, TArray, TNullable } from '../../types'; import { type SyncDbSide } from '../syncClient'; import type { Client } from 'pg'; interface ITriggerRow { trigger_name: string; event_manipulation: string; event_object_table: string; action_timing: string; action_statement: string; } interface ITriggerDefinition { trigger_name: string; event_manipulation: string; event_object_table: string; action_timing: string; action_statement: string; action_orientation: string | null; action_condition: string | null; } export declare class TriggerOperations { private sourceClient; private targetClient; private options; constructor(sourceClient: Client, targetClient: Client, options: ILegacySyncOptions); /** * Get all triggers from a schema on the given database. */ getTriggers(side: SyncDbSide): Promise>; /** * Get detailed trigger definition from the given database side. */ getTriggerDefinition(side: SyncDbSide, triggerName: string, tableName: string): Promise>; /** * Compare two trigger definitions to detect changes */ compareTriggerDefinitions(sourceTrigger: ITriggerDefinition | null | undefined, targetTrigger: ITriggerDefinition | null | undefined): boolean; /** * Generate CREATE TRIGGER statement for multi-event triggers */ generateCreateTriggerStatement(triggerGroup: ITriggerRow[], targetSchema: string): string; handleTriggersToDrop(sourceTriggers: ITriggerRow[], targetTriggers: ITriggerRow[], alterStatements: string[]): Promise; /** * Handle triggers to create in target */ handleTriggersToCreate(sourceTriggers: ITriggerRow[], targetTriggers: ITriggerRow[], alterStatements: string[]): Promise; /** * Group triggers by name to handle multi-event triggers */ private groupTriggersByName; /** * Handle triggers that have changed */ handleTriggersToUpdate(sourceTriggers: ITriggerRow[], targetTriggers: ITriggerRow[], alterStatements: string[]): Promise; /** * Generate trigger operations for schema sync */ generateTriggerOperations(): Promise; } export {}; //# sourceMappingURL=triggers.d.ts.map