mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +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