adapter.js 1.3 KB

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