Skip to content

Commit 855faf5

Browse files
committed
Fix migrate script
1 parent ff070db commit 855faf5

1 file changed

Lines changed: 20 additions & 5 deletions

File tree

src/db/migrate.ts

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,26 @@
11
import { migrate } from "drizzle-orm/postgres-js/migrator";
22
import { db } from "./index.js";
33

4-
async function runMigrations() {
5-
console.log("[migrate] Running migrations...");
6-
await migrate(db, { migrationsFolder: "./src/db/migrations" });
7-
console.log("[migrate] Done.");
8-
process.exit(0);
4+
async function runMigrations(retries = 10, delay = 2000) {
5+
for (let attempt = 1; attempt <= retries; attempt++) {
6+
try {
7+
console.log(`[migrate] Running migrations (attempt ${attempt})...`);
8+
await migrate(db, { migrationsFolder: "./src/db/migrations" });
9+
console.log("[migrate] Done.");
10+
process.exit(0);
11+
} catch (err: any) {
12+
const isTransient =
13+
err?.cause?.code === "ENOTFOUND" ||
14+
err?.cause?.code === "ECONNREFUSED" ||
15+
err?.cause?.code === "ETIMEDOUT";
16+
if (isTransient && attempt < retries) {
17+
console.log(`[migrate] DB not ready (${err.cause.code}), retrying in ${delay}ms...`);
18+
await new Promise((r) => setTimeout(r, delay));
19+
} else {
20+
throw err;
21+
}
22+
}
23+
}
924
}
1025

1126
runMigrations().catch((err) => {

0 commit comments

Comments
 (0)