UNPKG

iagate-querykit

Version:

QueryKit: lightweight TypeScript query toolkit with models, views, triggers, events, scheduler and adapters (better-sqlite3).

167 lines 5.17 kB
import type { DatabaseExecutor } from './types'; import { QueryBuilder } from './query-builder'; /** * Passo de migração que pode ser string SQL, array de strings ou função. * Suporta execução síncrona e assíncrona. */ export type MigrationStep = string | string[] | ((ctx: MigrationContext) => Promise<void> | void); /** * Especificação completa de uma migração. * Define como aplicar e reverter mudanças no banco de dados. * * @example * ```typescript * // Dados iniciais * const migration: MigrationSpec = { * id: '001_create_users_table', * up: 'CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)', * down: 'DROP TABLE users', * tags: ['schema', 'users'] * }; * * // Como usar * await migrateUp([migration]); * * // Output: Tabela 'users' criada no banco de dados * ``` */ export type MigrationSpec = { /** Identificador único da migração */ id: string; /** Passos para aplicar a migração */ up: MigrationStep; /** Passos opcionais para reverter a migração */ down?: MigrationStep; /** Tags opcionais para categorização */ tags?: string[]; }; /** * Contexto passado para execução de migrações. * Fornece acesso ao executor, dialeto e utilitários de query. * * @example * ```typescript * // Dados iniciais * const context: MigrationContext = { * exec: databaseExecutor, * dialect: 'postgres', * query: async (sql, bindings) => { executa query }, * runSync: (sql, bindings) => { executa query síncrona }, * qb: (tableName) => new QueryBuilder(tableName) * }; * * // Como usar * // Contexto passado para função de migração * * // Output: Contexto configurado para execução de migração * ``` */ export type MigrationContext = { /** Executor do banco de dados */ exec: DatabaseExecutor; /** Dialeto SQL do banco */ dialect?: DatabaseExecutor['dialect']; /** Função para executar queries assíncronas */ query: (sql: string, bindings?: any[]) => Promise<void>; /** Função para executar queries síncronas */ runSync: (sql: string, bindings?: any[]) => void; /** Factory para criar QueryBuilders */ qb: <T = any>(tableName: string) => QueryBuilder<T>; }; /** * Lista todas as migrações já aplicadas no banco. * * @param executor - Executor opcional (usa padrão se não fornecido) * @returns Promise que resolve com array de IDs de migrações aplicadas * * @example * ```typescript * // Dados iniciais * const executor = databaseExecutor; * * // Como usar * const appliedMigrations = await listAppliedMigrations(executor); * * // Output: ['001_create_users', '002_add_email_column'] * ``` */ export declare function listAppliedMigrations(executor?: DatabaseExecutor): Promise<string[]>; /** * Aplica migrações para cima (up) até um alvo específico. * Executa migrações não aplicadas em ordem sequencial. * * @param migrations - Array de especificações de migração * @param opts - Opções incluindo alvo e executor * @returns Promise que resolve com lista de migrações aplicadas * * @example * ```typescript * // Dados iniciais * const migrations = [ * { id: '001_create_users', up: 'CREATE TABLE users (id INTEGER PRIMARY KEY)' }, * { id: '002_add_email', up: 'ALTER TABLE users ADD COLUMN email TEXT' } * ]; * * // Como usar * const result = await migrateUp(migrations, { to: '002_add_email' }); * * // Output: { applied: ['001_create_users', '002_add_email'] } * ``` */ export declare function migrateUp(migrations: MigrationSpec[], opts?: { to?: string; executor?: DatabaseExecutor; }): Promise<{ applied: string[]; }>; /** * Reverte migrações para baixo (down) até um alvo específico. * Executa passos de reversão em ordem reversa. * * @param migrations - Array de especificações de migração * @param opts - Opções incluindo alvo, número de passos e executor * @returns Promise que resolve com lista de migrações revertidas * * @example * ```typescript * // Dados iniciais * const migrations = [ * { id: '001_create_users', up: 'CREATE TABLE users', down: 'DROP TABLE users' }, * { id: '002_add_email', up: 'ALTER TABLE users ADD email', down: 'ALTER TABLE users DROP email' } * ]; * * // Como usar * const result = await migrateDown(migrations, { steps: 1 }); * * // Output: { reverted: ['002_add_email'] } * ``` */ export declare function migrateDown(migrations: MigrationSpec[], opts?: { to?: string; steps?: number; executor?: DatabaseExecutor; }): Promise<{ reverted: string[]; }>; /** * Remove completamente a tabela de migrações. * Útil para resetar o estado de migrações. * * @param opts - Opções incluindo executor * @returns Promise que resolve quando a tabela for removida * * @example * ```typescript * // Dados iniciais * const executor = databaseExecutor; * * // Como usar * await resetMigrations({ executor }); * * // Output: Tabela de migrações removida, estado resetado * ``` */ export declare function resetMigrations(opts?: { executor?: DatabaseExecutor; }): Promise<void>; //# sourceMappingURL=migration-manager.d.ts.map