adapter.js 1.1 KB

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