adapter.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. const Path = require('path')
  2. class Adapter {
  3. constructor(params) {
  4. if (
  5. !process.env.SKIP_TAG_CHECK &&
  6. !process.argv.includes('create') &&
  7. !(process.argv.includes('-t') || process.argv.includes('--tags'))
  8. ) {
  9. console.error("ERROR: must pass tags using '-t' or '--tags', exiting")
  10. process.exit(1)
  11. }
  12. this.params = params || {}
  13. }
  14. getTemplatePath() {
  15. return Path.resolve(__dirname, 'template.js')
  16. }
  17. async connect() {
  18. const { waitForDb, db } = require('../../app/src/infrastructure/mongodb')
  19. const { getNativeDb } = require('../../app/src/infrastructure/Mongoose')
  20. await waitForDb()
  21. const nativeDb = await getNativeDb()
  22. return { db, nativeDb }
  23. }
  24. disconnect() {
  25. return Promise.resolve()
  26. }
  27. async getExecutedMigrationNames() {
  28. const { db } = await this.connect()
  29. const migrations = await db.migrations
  30. .find({}, { sort: { migratedAt: 1 }, projection: { name: 1 } })
  31. .toArray()
  32. return migrations.map(migration => migration.name)
  33. }
  34. async markExecuted(name) {
  35. const { db } = await this.connect()
  36. return db.migrations.insertOne({
  37. name,
  38. migratedAt: new Date(),
  39. })
  40. }
  41. async unmarkExecuted(name) {
  42. const { db } = await this.connect()
  43. return db.migrations.deleteOne({
  44. name,
  45. })
  46. }
  47. }
  48. module.exports = Adapter