migrator.js 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. import { readMigrationFiles } from "../migrator.js";
  2. import { sql } from "../sql/sql.js";
  3. async function migrate(db, callback, config) {
  4. const migrations = readMigrationFiles(config);
  5. const migrationTableCreate = sql`
  6. CREATE TABLE IF NOT EXISTS "drizzle"."__drizzle_migrations" (
  7. id SERIAL PRIMARY KEY,
  8. hash text NOT NULL,
  9. created_at numeric
  10. )
  11. `;
  12. await db.execute(sql`CREATE SCHEMA IF NOT EXISTS "drizzle"`);
  13. await db.execute(migrationTableCreate);
  14. const dbMigrations = await db.execute(
  15. sql`SELECT id, hash, created_at FROM "drizzle"."__drizzle_migrations" ORDER BY created_at DESC LIMIT 1`
  16. );
  17. const lastDbMigration = dbMigrations[0] ?? void 0;
  18. const queriesToRun = [];
  19. for (const migration of migrations) {
  20. if (!lastDbMigration || Number(lastDbMigration.created_at) < migration.folderMillis) {
  21. queriesToRun.push(
  22. ...migration.sql,
  23. `INSERT INTO "drizzle"."__drizzle_migrations" ("hash", "created_at") VALUES('${migration.hash}', '${migration.folderMillis}')`
  24. );
  25. }
  26. }
  27. await callback(queriesToRun);
  28. }
  29. export {
  30. migrate
  31. };
  32. //# sourceMappingURL=migrator.js.map