UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.

67 lines 2.3 kB
import dbMigrateShared from 'db-migrate-shared'; const { log } = dbMigrateShared; import dbMigrate from 'db-migrate'; const { getInstance } = dbMigrate; import { secondsToMilliseconds } from 'date-fns'; import path from 'path'; import { fileURLToPath } from 'node:url'; log.setLogLevel('error'); const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); async function noDatabaseUrl(fn) { // unset DATABASE_URL so it doesn't take presedence over the provided db config const dbUrlEnv = process.env.DATABASE_URL; delete process.env.DATABASE_URL; const result = fn(); process.env.DATABASE_URL = dbUrlEnv; return result; } export async function migrateDb({ db }, stopAt) { return noDatabaseUrl(async () => { const custom = { ...db, connectionTimeoutMillis: secondsToMilliseconds(10), }; // disable Intellij/WebStorm from setting verbose CLI argument to db-migrator process.argv = process.argv.filter((it) => !it.includes('--verbose')); const dbm = getInstance(true, { cwd: __dirname, config: { custom }, env: 'custom', }); return dbm.up(stopAt); }); } export async function requiresMigration({ db, }) { return noDatabaseUrl(async () => { const custom = { ...db, connectionTimeoutMillis: secondsToMilliseconds(10), }; // disable Intellij/WebStorm from setting verbose CLI argument to db-migrator process.argv = process.argv.filter((it) => !it.includes('--verbose')); const dbm = getInstance(true, { cwd: __dirname, config: { custom }, env: 'custom', }); const pendingMigrations = await dbm.check(); return pendingMigrations.length > 0; }); } // This exists to ease testing export async function resetDb({ db }) { return noDatabaseUrl(async () => { const custom = { ...db, connectionTimeoutMillis: secondsToMilliseconds(10), }; const dbm = getInstance(true, { cwd: __dirname, config: { custom }, env: 'custom', }); return dbm.reset(); }); } //# sourceMappingURL=migrator.js.map