File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11import { migrate } from "drizzle-orm/postgres-js/migrator" ;
22import { 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
1126runMigrations ( ) . catch ( ( err ) => {
You can’t perform that action at this time.
0 commit comments