Add web frontend
This commit is contained in:
27
server/src/db-init.ts
Normal file
27
server/src/db-init.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { execFileSync } from "node:child_process";
|
||||
import { existsSync } from "node:fs";
|
||||
import { dirname, join, resolve } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import type { FastifyBaseLogger } from "fastify";
|
||||
|
||||
function runPrismaCli(rootDir: string, args: string[]) {
|
||||
const prismaJs = join(rootDir, "node_modules", "prisma", "build", "index.js");
|
||||
if (existsSync(prismaJs)) {
|
||||
execFileSync(process.execPath, [prismaJs, ...args], {
|
||||
cwd: rootDir,
|
||||
stdio: "inherit",
|
||||
env: { ...process.env, PRISMA_HIDE_UPDATE_MESSAGE: "1" },
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
throw new Error("Prisma CLI not found at node_modules/prisma/build/index.js. Run `npm install` in /server.");
|
||||
}
|
||||
|
||||
export async function ensureDatabaseReady(logger: FastifyBaseLogger) {
|
||||
const rootDir = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
||||
const startedAt = Date.now();
|
||||
logger.info("Applying Prisma migrations...");
|
||||
runPrismaCli(rootDir, ["migrate", "deploy"]);
|
||||
logger.info({ durationMs: Date.now() - startedAt }, "Prisma migrations applied");
|
||||
}
|
||||
Reference in New Issue
Block a user