migrate.ts 854 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /**
  2. * umzug cli
  3. *
  4. * Usage:
  5. * pnpm ts-node prisma/migrate.ts
  6. */
  7. import { resolve } from 'node:path';
  8. import { MongoClient } from 'mongodb';
  9. import { MongoDBStorage, Umzug } from 'umzug';
  10. (async () => {
  11. const url = process.env.MONGO_URI;
  12. if (url === undefined) {
  13. throw new Error('MONGO_URI is required');
  14. }
  15. const { prisma } = await import(
  16. process.env.NODE_ENV === 'production'
  17. ? '../dist/utils/prisma'
  18. : '../src/utils/prisma'
  19. );
  20. const client = new MongoClient(url);
  21. await client.connect();
  22. const umzug = new Umzug({
  23. migrations: { glob: resolve(__dirname, '../prisma/migrations/*.(ts|js)') },
  24. context: prisma,
  25. storage: new MongoDBStorage({
  26. connection: client.db(),
  27. }),
  28. logger: console,
  29. });
  30. if (require.main === module) {
  31. await umzug.runAsCLI();
  32. process.exit(0);
  33. }
  34. })();