UNPKG

@deepbrainspace/nx-surrealdb

Version:

NX plugin for SurrealDB migrations with modular architecture

105 lines • 5.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = runExecutor; const devkit_1 = require("@nx/devkit"); const migration_service_1 = require("../../lib/domain/migration-service"); const debug_1 = require("../../lib/infrastructure/debug"); async function runExecutor(options, context) { const engine = new migration_service_1.MigrationService(context); const debug = debug_1.Debug.scope('migrate-executor'); // Enable debug mode if requested debug_1.Debug.setEnabled(!!options.debug); try { // Initialize migration engine await engine.initialize({ url: options.url || '', user: options.user || '', pass: options.pass || '', namespace: options.namespace, database: options.database, envFile: options.envFile, useTransactions: options.useTransactions, initPath: options.initPath || 'database', schemaPath: options.schemaPath, force: options.force || false, configPath: options.configPath, debug: options.debug, dryRun: options.dryRun || false, }); // Determine target modules and filenames const targetModules = options.module !== undefined && options.module !== '' ? String(options.module) .split(',') .map(m => m.trim()) .filter(m => m.length > 0) : undefined; const targetFilenames = options.filename !== undefined && options.filename !== '' ? String(options.filename) .split(',') .map(f => f.trim()) .filter(f => f.length > 0) : undefined; debug.log(`Target modules: ${targetModules ? targetModules.join(', ') : 'all'}`); debug.log(`Target filenames: ${targetFilenames ? targetFilenames.join(', ') : 'all'}`); // Execute migrations if (options.dryRun) { devkit_1.logger.info('Dry run mode - showing pending migrations without applying them'); } else if (options.debug) { devkit_1.logger.info('šŸš€ Starting migration execution...'); } const result = await engine.executeMigrations(targetModules, 'migrate', targetFilenames); if (result.success) { if (result.filesProcessed === 0 && result.results.length === 0) { devkit_1.logger.info(`āœ… All migrations are up to date - no pending migrations found`); devkit_1.logger.info(` Execution time: ${result.executionTimeMs}ms`); } else { devkit_1.logger.info(`āœ… Migration completed successfully!`); devkit_1.logger.info(` Files processed: ${result.filesProcessed}`); devkit_1.logger.info(` Files skipped: ${result.filesSkipped}`); devkit_1.logger.info(` Execution time: ${result.executionTimeMs}ms`); } if (result.results.length > 0) { devkit_1.logger.info('\nšŸ“Š Migration Details:'); for (const fileResult of result.results) { const status = fileResult.success ? 'āœ…' : fileResult.skipped ? 'ā­ļø' : 'āŒ'; const reason = fileResult.skipped ? ` (${fileResult.skipReason})` : fileResult.error ? ` (${fileResult.error})` : ''; devkit_1.logger.info(` ${status} ${fileResult.file.moduleId}/${fileResult.file.filename}${reason}`); // Show detailed information when detailed flag is used if (options.detailed && (fileResult.success || fileResult.skipped)) { devkit_1.logger.info(` File: ${fileResult.file.number}_${fileResult.file.name}_${fileResult.file.direction}.surql`); devkit_1.logger.info(` Execution time: ${fileResult.executionTimeMs}ms`); if (fileResult.file.checksum) { devkit_1.logger.info(` Checksum: ${fileResult.file.checksum.substring(0, 12)}...`); } } } } } else { devkit_1.logger.error('āŒ Migration failed!'); for (const fileResult of result.results) { if (!fileResult.success && !fileResult.skipped) { devkit_1.logger.error(` āŒ ${fileResult.file.moduleId}/${fileResult.file.filename}: ${fileResult.error}`); } } devkit_1.logger.info(` Files processed: ${result.filesProcessed}`); devkit_1.logger.info(` Execution time: ${result.executionTimeMs}ms`); } return { success: result.success }; } catch (error) { devkit_1.logger.error('šŸ’„ Migration execution failed:'); devkit_1.logger.error(error instanceof Error ? error.message : String(error)); return { success: false }; } finally { await engine.close(); } } //# sourceMappingURL=executor.js.map