UNPKG

morpheus4j

Version:

Morpheus is a migration tool for Neo4j. It aims to be a simple and intuitive way to migrate your database.

51 lines 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@oclif/core"); const base_command_1 = require("../base-command"); const connection_1 = require("../neo4j/connection"); const file_service_1 = require("../services/file.service"); const migrate_service_1 = require("../services/migrate.service"); const neo4j_repository_1 = require("../services/neo4j.repository"); const types_1 = require("../types"); class Migrate extends base_command_1.BaseCommand { static aliases = []; static description = 'Execute pending database migrations in sequential order'; static examples = [ '<%= config.bin %> migrate', '<%= config.bin %> migrate -m ~/path/to/migrations', '<%= config.bin %> migrate --config ./custom-config.json', '<%= config.bin %> migrate --dry-run', '<%= config.bin %> migrate --transaction-mode=PER_STATEMENT', ]; static flags = { ...base_command_1.BaseCommand.flags, 'dry-run': core_1.Flags.boolean({ default: false, description: 'Perform a dry run - no changes will be made to the database', }), 'transaction-mode': core_1.Flags.option({ default: types_1.TransactionMode.PER_MIGRATION, description: 'Transaction mode', options: [types_1.TransactionMode.PER_MIGRATION, types_1.TransactionMode.PER_STATEMENT], })(), }; async run() { try { const { flags } = await this.parse(Migrate); const config = this.getConfig(); const connection = await (0, connection_1.getDatabaseConnection)(config); const repository = new neo4j_repository_1.Repository(connection); const fileService = new file_service_1.FileService(config); await new migrate_service_1.MigrationService(repository, fileService).migrate({ dryRun: flags['dry-run'], transactionMode: flags['transaction-mode'], }); await connection.close(); } catch (error) { this.error(error instanceof Error ? error.message : String(error)); } } } exports.default = Migrate; //# sourceMappingURL=migrate.js.map