From 6531ad0bbc73cff5d1f65e4bfec426a219a63dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivar=20Conradi=20=C3=98sthus?= Date: Thu, 11 Mar 2021 11:42:50 +0100 Subject: [PATCH] wip: can we just reset db? --- src/lib/server-impl.js | 2 +- src/lib/server-impl.test.js | 2 +- src/migrator.js | 18 ++++++++++++++---- src/test/e2e/helpers/database-init.js | 14 +++++++++++--- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/lib/server-impl.js b/src/lib/server-impl.js index 8ab18c20f1..f71d2eae72 100644 --- a/src/lib/server-impl.js +++ b/src/lib/server-impl.js @@ -116,7 +116,7 @@ async function start(opts) { if (options.disableDBMigration) { logger.info('DB migrations disabled'); } else { - await migrator(options); + await migrator.up(options); } } catch (err) { logger.error('Failed to migrate db', err); diff --git a/src/lib/server-impl.test.js b/src/lib/server-impl.test.js index b9256bb158..d6bc371581 100644 --- a/src/lib/server-impl.test.js +++ b/src/lib/server-impl.test.js @@ -50,7 +50,7 @@ const serverImpl = proxyquire('./server-impl', { }, }, '../migrator': function() { - return Promise.resolve(); + return { up: Promise.resolve() }; }, }); diff --git a/src/migrator.js b/src/migrator.js index ef3d0e6921..dd73a3deea 100644 --- a/src/migrator.js +++ b/src/migrator.js @@ -4,14 +4,24 @@ require('db-migrate-shared').log.setLogLevel('error'); const { getInstance } = require('db-migrate'); -function migrateDb({ db, databaseSchema = 'public' }) { +function getDbInstance({ db, databaseSchema = 'public' }) { const custom = { ...db, schema: databaseSchema }; - const dbmigrate = getInstance(true, { + return getInstance(true, { cwd: __dirname, config: { custom }, env: 'custom', }); - return dbmigrate.up(); } -module.exports = migrateDb; +async function up(options) { + return getDbInstance(options).up(); +} + +async function reset(options) { + return getDbInstance(options).reset(); +} + +module.exports = { + up, + reset, +}; diff --git a/src/test/e2e/helpers/database-init.js b/src/test/e2e/helpers/database-init.js index 7c734b8fe6..7565d2d580 100644 --- a/src/test/e2e/helpers/database-init.js +++ b/src/test/e2e/helpers/database-init.js @@ -83,7 +83,7 @@ async function setupDatabase(stores) { module.exports = async function init(databaseSchema = 'test', getLogger) { const options = { - db: { ...dbConfig.getDb(), pool: { min: 2, max: 8 } }, + db: { ...dbConfig.getDb(), pool: { min: 2, max: 20 } }, databaseSchema, getLogger, }; @@ -93,7 +93,7 @@ module.exports = async function init(databaseSchema = 'test', getLogger) { await db.raw(`DROP SCHEMA IF EXISTS ${options.databaseSchema} CASCADE`); await db.raw(`CREATE SCHEMA IF NOT EXISTS ${options.databaseSchema}`); - await migrator(options); + await migrator.up(options); await db.destroy(); const stores = await createStores(options, eventBus); stores.clientMetricsStore.setMaxListeners(0); @@ -101,10 +101,18 @@ module.exports = async function init(databaseSchema = 'test', getLogger) { await resetDatabase(stores); await setupDatabase(stores); + const reset = async () => { + await db.raw(`DROP SCHEMA IF EXISTS ${options.databaseSchema} CASCADE`); + await db.raw(`CREATE SCHEMA IF NOT EXISTS ${options.databaseSchema}`); + await migrator.reset(options); + await migrator.up(options); + }; + return { stores, reset: async () => { - await resetDatabase(stores); + // await resetDatabase(stores); + await reset(); await setupDatabase(stores); }, destroy: async () => {