comfyui-deploy/web/migrate.mts
2024-01-20 22:38:31 +08:00

43 lines
1.2 KiB
TypeScript

const { drizzle } = await import("drizzle-orm/postgres-js");
const { migrate } = await import("drizzle-orm/postgres-js/migrator");
const { default: postgres } = await import("postgres");
import { config } from "dotenv";
config({
path: ".local.env",
});
const migrationsFolderName = process.env.MIGRATIONS_FOLDER || "drizzle";
let sslMode: string | boolean = process.env.SSL || "require";
if (sslMode === "false") sslMode = false;
let connectionString = process.env.POSTGRES_URL!;
const isDevContainer = process.env.VSCODE_DEV_CONTAINER !== undefined;
if (isDevContainer) connectionString = connectionString.replace("localhost","host.docker.internal")
const sql = postgres(connectionString, { max: 1, ssl: sslMode as any });
const db = drizzle(sql, {
logger: true,
});
let retries = 5;
while(retries) {
try {
await sql`SELECT NOW()`;
console.log('Database is live');
break;
} catch (error) {
console.error('Database is not live yet', error);
retries -= 1;
console.log(`Retries left: ${retries}`);
await new Promise(res => setTimeout(res, 1000));
}
}
console.log("Migrating...");
await migrate(db, { migrationsFolder: migrationsFolderName });
console.log("Done!");
process.exit();