/** * Migration Builder * * Provides type-safe migration operations with two modes: * - OperationRecorder: Record operations only (for code generation) * - MigrationBuilder: Execute DDL operations (for integration tests/runtime) */ import type { ForeignKeyAction } from '../../schema/types.js'; import type { NamingStrategy } from '../../type/namingStrategy.js'; import type { SqlQuerier } from '../../type/querier.js'; import type { AnyMigrationOperation, IAlterTableBuilder, IColumnBuilder, IMigrationBuilder, ITableBuilder } from './types.js'; /** * Records migration operations without executing them. * Use for migration code generation and dry-run scenarios. */ export declare class OperationRecorder implements IMigrationBuilder { protected readonly operations: AnyMigrationOperation[]; createTable(name: string, callback: (table: ITableBuilder) => void): Promise; dropTable(name: string, options?: { ifExists?: boolean; cascade?: boolean; }): Promise; renameTable(oldName: string, newName: string): Promise; alterTable(name: string, callback: (table: IAlterTableBuilder) => void): Promise; addColumn(tableName: string, columnName: string, callback: (column: IColumnBuilder) => void): Promise; dropColumn(tableName: string, columnName: string): Promise; alterColumn(tableName: string, columnName: string, callback: (column: IColumnBuilder) => void): Promise; renameColumn(tableName: string, oldName: string, newName: string): Promise; createIndex(tableName: string, columns: string[], options?: { name?: string; unique?: boolean; where?: string; }): Promise; dropIndex(tableName: string, indexName: string): Promise; addForeignKey(tableName: string, columns: string[], target: { table: string; columns: string[]; }, options?: { name?: string; onDelete?: ForeignKeyAction; onUpdate?: ForeignKeyAction; }): Promise; dropForeignKey(tableName: string, constraintName: string): Promise; raw(sql: string): Promise; getOperations(): AnyMigrationOperation[]; recordOperationSync(operation: AnyMigrationOperation): void; } /** * Options for the migration builder. */ export interface MigrationBuilderOptions { /** Custom naming strategy for generated SQL */ namingStrategy?: NamingStrategy; } /** * Executes DDL operations via a SQL querier. * Use for integration tests and runtime schema management. * * @example * ```typescript * const builder = new MigrationBuilder(querier); * * await builder.createTable('users', (t) => { * t.id(); * t.string('name'); * t.timestamps(); * }); * ``` */ export declare class MigrationBuilder extends OperationRecorder { private readonly querier; private readonly sqlGenerator; constructor(querier: SqlQuerier, options?: MigrationBuilderOptions); recordOperationSync(operation: AnyMigrationOperation): void; raw(sql: string): Promise; createTable(name: string, callback: (table: ITableBuilder) => void): Promise; dropTable(name: string, options?: { ifExists?: boolean; cascade?: boolean; }): Promise; renameTable(oldName: string, newName: string): Promise; addColumn(tableName: string, columnName: string, callback: (column: IColumnBuilder) => void): Promise; dropColumn(tableName: string, columnName: string): Promise; alterColumn(tableName: string, columnName: string, callback: (column: IColumnBuilder) => void): Promise; renameColumn(tableName: string, oldName: string, newName: string): Promise; createIndex(tableName: string, columns: string[], options?: { name?: string; unique?: boolean; where?: string; }): Promise; dropIndex(tableName: string, indexName: string): Promise; addForeignKey(tableName: string, columns: string[], target: { table: string; columns: string[]; }, options?: { name?: string; onDelete?: ForeignKeyAction; onUpdate?: ForeignKeyAction; }): Promise; dropForeignKey(tableName: string, constraintName: string): Promise; private execute; private operationToSql; } /** * Create an operation recorder for dry-run (recording only). * @deprecated Use `new OperationRecorder()` directly */ export declare function createDryRunBuilder(): OperationRecorder; //# sourceMappingURL=migrationBuilder.d.ts.map