import { DatabaseTransaction } from '../interfaces/DatabaseTransaction.js'; import { QueryResult } from '../interfaces/QueryResult.js'; import { Logger } from '@200systems/mf-logger'; /** * Base transaction class that provides common transaction logic with database type awareness * This ensures consistent behavior across different database implementations */ export declare abstract class BaseTransaction implements DatabaseTransaction { protected readonly logger: Logger; protected readonly dbType: 'postgresql' | 'mysql'; protected completed: boolean; constructor(logger: Logger, dbType: 'postgresql' | 'mysql'); abstract query(text: string, params?: any[]): Promise>; /** * NEW: Get the database type for this transaction */ getDatabaseType(): 'postgresql' | 'mysql'; /** * NEW: Check if this database supports RETURNING clause */ supportsReturning(): boolean; /** * NEW: Adapt SQL query for database-specific syntax */ adaptSql(sql: string): string; /** * NEW: Create database-specific INSERT SQL */ createInsertSql(tableName: string, columns: string[]): string; /** * NEW: Create database-specific UPDATE SQL */ createUpdateSql(tableName: string, columns: string[]): string; /** * Template method for committing transaction * Subclasses implement doCommit() for database-specific logic */ commit(): Promise; /** * Template method for rolling back transaction * Subclasses implement doRollback() for database-specific logic */ rollback(): Promise; /** * Check if transaction is completed */ isCompleted(): boolean; /** * Database-specific commit implementation */ protected abstract doCommit(): Promise; /** * Database-specific rollback implementation */ protected abstract doRollback(): Promise; /** * Database-specific cleanup (connection release, etc.) */ protected abstract doCleanup(): Promise; /** * Ensure cleanup happens in both success and error cases */ protected ensureCleanup(): Promise; } //# sourceMappingURL=BaseTransaction.d.ts.map