UNPKG

@deepbrainspace/nx-surrealdb

Version:

NX plugin for SurrealDB migrations with modular architecture

120 lines (119 loc) 4.17 kB
import { SurrealDBClient } from '../infrastructure/client'; import { MigrationRepository } from './migration-repository'; import { DependencyResolver } from './dependency-resolver'; import { type MigrationFile } from '../filesystem/migration-file-processor'; import { type ResolvedFilename } from '../filesystem/pattern-resolver'; import { Migration } from '../configuration/types'; import { ExecutorContext } from '@nx/devkit'; export interface MigrationServiceOptions { url: string; user: string; pass: string; namespace?: string; database?: string; envFile?: string; useTransactions?: boolean; initPath?: string; schemaPath?: string; force?: boolean; configPath?: string; debug?: boolean; dryRun?: boolean; } export interface MigrationExecutionContext { client: SurrealDBClient; repository: MigrationRepository; resolver: DependencyResolver; options: ResolvedMigrationOptions; } export interface ResolvedMigrationOptions { url: string; user: string; pass: string; namespace: string; database: string; useTransactions: boolean; initPath: string; schemaPath?: string; force: boolean; configPath?: string; debug?: boolean; dryRun: boolean; } export interface MigrationResult { success: boolean; filesProcessed: number; filesSkipped: number; executionTimeMs: number; results: MigrationFileResult[]; } export interface MigrationFileResult { file: MigrationFile; success: boolean; executionTimeMs: number; error?: string; skipped?: boolean; skipReason?: string; } export declare class MigrationService { private projectContext?; private context; private options; private patternResolver; private debug; constructor(projectContext?: ExecutorContext); static findMatchingSubdirectory(basePath: string, pattern: string): Promise<string | null>; initialize(options: MigrationServiceOptions): Promise<void>; findPendingMigrations(targetModules?: string[], direction?: 'up' | 'down'): Promise<MigrationFile[]>; executeMigrations(targetModules?: string[], operation?: 'migrate' | 'rollback', targetFilenames?: string[]): Promise<MigrationResult>; validateRollback(targetModules?: string[]): Promise<{ canRollback: boolean; blockedBy: string[]; warnings: string[]; migrationChecks: Array<{ moduleId: string; hasAppliedMigrations: boolean; rollbackFilesAvailable: boolean; dependencyConflicts: string[]; }>; }>; getMigrationStatus(targetModules?: string[]): Promise<{ modules: Array<{ moduleId: string; appliedMigrations: number; pendingMigrations: number; lastApplied?: Date; dependencies: string[]; dependents: string[]; }>; totalApplied: number; totalPending: number; }>; getFileStatus(resolvedFilenames: ResolvedFilename[]): Promise<Array<{ filename: string; moduleId: string; number: string; name: string; direction: 'up' | 'down'; status: 'applied' | 'pending' | 'unknown'; appliedAt?: Date; checksum?: string; dependencies: string[]; dependents: string[]; }>>; private buildMigrationRecord; findLastMigrations(moduleIds: string[]): Promise<Migration[]>; close(): Promise<void>; resolveTargetModules(targetModules: string[]): string[]; resolveTargetFilenames(filenamePatterns: string[], targetModules?: string[], direction?: 'up' | 'down'): Promise<ResolvedFilename[]>; resolveRollbackFilenames(filenamePatterns: string[], targetModules?: string[]): Promise<{ resolved: ResolvedFilename[]; warnings: string[]; }>; findModuleMigrations(moduleId: string, direction: 'up' | 'down', basePath: string, includeContent?: boolean): Promise<MigrationFile[]>; private executeSingleMigration; private getModuleStatusCounts; private getAppliedMigrations; getConfig(): import("..").MigrationsConfig; getAllModules(): string[]; }