mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-23 00:22:19 +01:00
fix: add resetDb to migrator
This commit is contained in:
parent
559cad3c27
commit
dff86fcfff
@ -124,6 +124,7 @@
|
||||
"@types/owasp-password-strength-test": "^1.3.0",
|
||||
"@types/stoppable": "^1.1.1",
|
||||
"@types/supertest": "^2.0.11",
|
||||
"@types/uuid": "^8.3.1",
|
||||
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
||||
"@typescript-eslint/parser": "^4.22.0",
|
||||
"copyfiles": "^2.4.1",
|
||||
|
@ -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('*');
|
||||
|
@ -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);
|
||||
|
@ -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
src/migrator.ts
Normal file
30
src/migrator.ts
Normal 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();
|
||||
}
|
@ -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);
|
||||
|
53
yarn.lock
53
yarn.lock
@ -888,6 +888,11 @@
|
||||
dependencies:
|
||||
"@types/superagent" "*"
|
||||
|
||||
"@types/uuid@^8.3.1":
|
||||
version "8.3.1"
|
||||
resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz"
|
||||
integrity sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==
|
||||
|
||||
"@types/yargs-parser@*":
|
||||
version "20.2.1"
|
||||
resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz"
|
||||
@ -1233,12 +1238,12 @@ async@^3.1.1:
|
||||
|
||||
async@~0.9.0:
|
||||
version "0.9.2"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
|
||||
resolved "https://registry.npmjs.org/async/-/async-0.9.2.tgz"
|
||||
integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
|
||||
|
||||
async@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9"
|
||||
resolved "https://registry.npmjs.org/async/-/async-1.0.0.tgz"
|
||||
integrity sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=
|
||||
|
||||
asynckit@^0.4.0:
|
||||
@ -1557,7 +1562,7 @@ char-regex@^1.0.2:
|
||||
|
||||
chownr@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
|
||||
resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz"
|
||||
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
|
||||
|
||||
ci-info@^3.1.1:
|
||||
@ -1677,12 +1682,12 @@ colorette@^1.2.2:
|
||||
|
||||
colors@1.0.x:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
|
||||
resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz"
|
||||
integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
|
||||
|
||||
colors@^1.1.2:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
|
||||
resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz"
|
||||
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
|
||||
|
||||
combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
|
||||
@ -1923,7 +1928,7 @@ cssstyle@^2.3.0:
|
||||
|
||||
cycle@1.0.x:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2"
|
||||
resolved "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz"
|
||||
integrity sha1-IegLK+hYD5i0aPN5QwZisEbDStI=
|
||||
|
||||
d@1, d@^1.0.1:
|
||||
@ -1969,7 +1974,7 @@ db-migrate-base@^2.3.0:
|
||||
|
||||
db-migrate-pg@1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/db-migrate-pg/-/db-migrate-pg-1.2.2.tgz#66436dbad0ba398c05851d200f768db6b2e5bc1a"
|
||||
resolved "https://registry.npmjs.org/db-migrate-pg/-/db-migrate-pg-1.2.2.tgz"
|
||||
integrity sha512-+rgrhGNWC2SzcfweopyZqOQ1Igz1RVFMUZwUs6SviHpOUzFwb0NZWkG0pw1GaO+JxTxS7VJjckUWkOwZbVYVag==
|
||||
dependencies:
|
||||
bluebird "^3.1.1"
|
||||
@ -1984,7 +1989,7 @@ db-migrate-shared@1.2.0, db-migrate-shared@^1.2.0:
|
||||
|
||||
db-migrate@0.11.12:
|
||||
version "0.11.12"
|
||||
resolved "https://registry.yarnpkg.com/db-migrate/-/db-migrate-0.11.12.tgz#2798fc46da51fc2589497d462f3c6116802cfb6a"
|
||||
resolved "https://registry.npmjs.org/db-migrate/-/db-migrate-0.11.12.tgz"
|
||||
integrity sha512-HUS8T5A3sKGCi+hz9XMKMwAKfU9sqhpDufW9nbVSRc5wxDO695uxA5lDe+If0OdvwwQOVxOnEZqkzAAxgyeFWg==
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
@ -2781,7 +2786,7 @@ extsprintf@^1.2.0:
|
||||
|
||||
eyes@0.1.x:
|
||||
version "0.1.8"
|
||||
resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0"
|
||||
resolved "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz"
|
||||
integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=
|
||||
|
||||
faker@^5.5.3:
|
||||
@ -3048,7 +3053,7 @@ fs-extra@^8.1.0:
|
||||
|
||||
fs-minipass@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
|
||||
resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz"
|
||||
integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
|
||||
dependencies:
|
||||
minipass "^3.0.0"
|
||||
@ -3806,7 +3811,7 @@ isobject@^3.0.0, isobject@^3.0.1:
|
||||
|
||||
isstream@0.1.x, isstream@~0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
||||
resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
|
||||
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
|
||||
|
||||
istanbul-lib-coverage@^3.0.0:
|
||||
@ -4443,7 +4448,7 @@ kleur@^3.0.3:
|
||||
|
||||
knex@0.95.10:
|
||||
version "0.95.10"
|
||||
resolved "https://registry.yarnpkg.com/knex/-/knex-0.95.10.tgz#9c41a4f69309bc437f79985cbc0a1e7a3208483e"
|
||||
resolved "https://registry.npmjs.org/knex/-/knex-0.95.10.tgz"
|
||||
integrity sha512-I60A8TXcMdeJlE6h7DSgEYyY37S7kgLObz1qlJ7QvPMD6vnKO5dtuLEht5pMia9Qf5BomqVgkWCdVTqcC/ImOA==
|
||||
dependencies:
|
||||
colorette "1.2.1"
|
||||
@ -4870,14 +4875,14 @@ minimist@^1.2.0, minimist@^1.2.5:
|
||||
|
||||
minipass@^3.0.0:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
|
||||
resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz"
|
||||
integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
minizlib@^2.1.1:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
|
||||
resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz"
|
||||
integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
|
||||
dependencies:
|
||||
minipass "^3.0.0"
|
||||
@ -4893,7 +4898,7 @@ mixin-deep@^1.2.0:
|
||||
|
||||
mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
||||
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
|
||||
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
||||
|
||||
mkdirp@^0.5.4, mkdirp@~0.5.0:
|
||||
@ -4959,7 +4964,7 @@ mustache@^4.1.0:
|
||||
|
||||
mute-stream@~0.0.4:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
||||
resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz"
|
||||
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
|
||||
|
||||
nanomatch@^1.2.9:
|
||||
@ -5645,7 +5650,7 @@ promise-polyfill@^8.1.3:
|
||||
|
||||
prompt@^1.0.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.2.0.tgz#5d8f1d9011766bac07abde510dbf4338d87b4f02"
|
||||
resolved "https://registry.npmjs.org/prompt/-/prompt-1.2.0.tgz"
|
||||
integrity sha512-iGerYRpRUg5ZyC+FJ/25G5PUKuWAGRjW1uOlhX7Pi3O5YygdK6R+KEaBjRbHSkU5vfS5PZCltSPZdDtUYwRCZA==
|
||||
dependencies:
|
||||
async "~0.9.0"
|
||||
@ -5801,7 +5806,7 @@ read-pkg@^6.0.0:
|
||||
|
||||
read@1.0.x:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
|
||||
resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz"
|
||||
integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=
|
||||
dependencies:
|
||||
mute-stream "~0.0.4"
|
||||
@ -5850,7 +5855,7 @@ readable-stream@~1.0.31:
|
||||
|
||||
rechoir@0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca"
|
||||
resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz"
|
||||
integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==
|
||||
dependencies:
|
||||
resolve "^1.9.0"
|
||||
@ -6005,7 +6010,7 @@ reusify@^1.0.4:
|
||||
|
||||
revalidator@0.1.x:
|
||||
version "0.1.8"
|
||||
resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b"
|
||||
resolved "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz"
|
||||
integrity sha1-/s5hv6DBtSoga9axgZgYS91SOjs=
|
||||
|
||||
rfdc@^1.1.4:
|
||||
@ -6363,7 +6368,7 @@ sshpk@^1.7.0:
|
||||
|
||||
stack-trace@0.0.x:
|
||||
version "0.0.10"
|
||||
resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
|
||||
resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz"
|
||||
integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
|
||||
|
||||
stack-utils@^2.0.3:
|
||||
@ -6626,7 +6631,7 @@ table@^6.0.9:
|
||||
|
||||
tar@^6.1.0:
|
||||
version "6.1.11"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
|
||||
resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz"
|
||||
integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
|
||||
dependencies:
|
||||
chownr "^2.0.0"
|
||||
@ -7200,7 +7205,7 @@ wide-align@^1.1.0:
|
||||
|
||||
winston@2.x:
|
||||
version "2.4.5"
|
||||
resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.5.tgz#f2e431d56154c4ea765545fc1003bd340c95b59a"
|
||||
resolved "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz"
|
||||
integrity sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==
|
||||
dependencies:
|
||||
async "~1.0.0"
|
||||
@ -7280,7 +7285,7 @@ y18n@^5.0.5:
|
||||
|
||||
yallist@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
|
||||
resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
|
||||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
||||
|
||||
yaml@^1.10.0:
|
||||
|
Loading…
Reference in New Issue
Block a user