migrator.js 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. import { readMigrationFiles } from "../migrator.js";
  2. import { sql } from "../sql/sql.js";
  3. async function migrate(db, config) {
  4. const migrations = readMigrationFiles(config);
  5. const migrationsTable = config.migrationsTable ?? "__drizzle_migrations";
  6. const migrationTableCreate = sql`
  7. CREATE TABLE IF NOT EXISTS ${sql.identifier(migrationsTable)} (
  8. id SERIAL PRIMARY KEY,
  9. hash text NOT NULL,
  10. created_at bigint
  11. )
  12. `;
  13. await db.session.execute(migrationTableCreate);
  14. const dbMigrations = await db.session.all(
  15. sql`select id, hash, created_at from ${sql.identifier(migrationsTable)} order by created_at desc limit 1`
  16. );
  17. const lastDbMigration = dbMigrations[0];
  18. for await (const migration of migrations) {
  19. if (!lastDbMigration || Number(lastDbMigration.created_at) < migration.folderMillis) {
  20. for (const stmt of migration.sql) {
  21. await db.session.execute(sql.raw(stmt));
  22. }
  23. await db.session.execute(
  24. sql`insert into ${sql.identifier(migrationsTable)} ("hash", "created_at") values(${migration.hash}, ${migration.folderMillis})`
  25. );
  26. }
  27. }
  28. }
  29. export {
  30. migrate
  31. };
  32. //# sourceMappingURL=migrator.js.map