fix: add resetDb to migrator

This commit is contained in:
Ivar Conradi Østhus
2021-09-10 11:42:11 +02:00
parent 559cad3c27
commit dff86fcfff
7 changed files with 67 additions and 50 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
import { Knex } from 'knex';
import EventEmitter from 'events';
import * as uuid from 'uuid';
import { v4 as uuidv4 } from 'uuid';
import metricsHelper from '../util/metrics-helper';
import { DB_TIME } from '../metric-events';
import { Logger, LogProvider } from '../logger';
@@ -142,7 +142,7 @@ class FeatureStrategiesStore implements IFeatureStrategiesStore {
async createStrategyConfig(
strategyConfig: Omit<IFeatureStrategy, 'id' | 'createdAt'>,
): Promise<IFeatureStrategy> {
const strategyRow = mapInput({ ...strategyConfig, id: uuid.v4() });
const strategyRow = mapInput({ ...strategyConfig, id: uuidv4() });
const rows = await this.db<IFeatureStrategiesTable>(T.featureStrategies)
.insert(strategyRow)
.returning('*');
+3 -3
View File
@@ -2,7 +2,7 @@ import EventEmitter from 'events';
import stoppable, { StoppableServer } from 'stoppable';
import { promisify } from 'util';
import version from './util/version';
import migrator from '../migrator';
import { migrateDb } from '../migrator';
import getApp from './app';
import { createMetricsMonitor } from './metrics';
import { createStores } from './db';
@@ -116,7 +116,7 @@ async function start(opts: IUnleashOptions = {}): Promise<IUnleash> {
logger.info('DB migration: disabled');
} else {
logger.info('DB migration: start');
await migrator(config);
await migrateDb(config);
logger.info('DB migration: end');
}
} catch (err) {
@@ -140,7 +140,7 @@ async function create(opts: IUnleashOptions): Promise<IUnleash> {
if (config.db.disableMigration) {
logger.info('DB migrations disabled');
} else {
await migrator(config);
await migrateDb(config);
}
} catch (err) {
logger.error('Failed to migrate db', err);
-19
View File
@@ -1,19 +0,0 @@
'use strict';
require('db-migrate-shared').log.setLogLevel('error');
const { getInstance } = require('db-migrate');
async function migrateDb({ db }) {
const custom = { ...db, connectionTimeoutMillis: 10000 };
const dbm = getInstance(true, {
cwd: __dirname,
config: { custom },
env: 'custom',
});
return dbm.up();
}
module.exports = migrateDb;
+30
View File
@@ -0,0 +1,30 @@
import { log } from 'db-migrate-shared';
import { getInstance } from 'db-migrate';
import { IUnleashConfig } from './lib/types/option';
log.setLogLevel('error');
export async function migrateDb({ db }: IUnleashConfig): Promise<void> {
const custom = { ...db, connectionTimeoutMillis: 10000 };
const dbm = getInstance(true, {
cwd: __dirname,
config: { custom },
env: 'custom',
});
return dbm.up();
}
// This exists to ease testing
export async function resetDb({ db }: IUnleashConfig): Promise<void> {
const custom = { ...db, connectionTimeoutMillis: 10000 };
const dbm = getInstance(true, {
cwd: __dirname,
config: { custom },
env: 'custom',
});
return dbm.reset();
}
+2 -2
View File
@@ -1,5 +1,5 @@
import { EventEmitter } from 'events';
import migrator from '../../../migrator';
import { migrateDb } from '../../../migrator';
import { createStores } from '../../../lib/db';
import { createDb } from '../../../lib/db/db-pool';
import dbConfig from './database-config';
@@ -88,7 +88,7 @@ export default async function init(
await db.raw(`DROP SCHEMA IF EXISTS ${config.db.schema} CASCADE`);
await db.raw(`CREATE SCHEMA IF NOT EXISTS ${config.db.schema}`);
// @ts-ignore
await migrator({ ...config, databaseSchema: config.db.schema });
await migrateDb({ ...config, databaseSchema: config.db.schema });
await db.destroy();
const testDb = createDb(config);
const stores = await createStores(config, eventBus, testDb);