diff --git a/bun.lockb b/bun.lockb index 38c3991..ddbf6da 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/pkgs/server/create.ts b/pkgs/server/create.ts index 566b590..7b31d46 100644 --- a/pkgs/server/create.ts +++ b/pkgs/server/create.ts @@ -58,6 +58,12 @@ export const createServer = async () => { await scan(dir(`app/srv/api`)); await scan(dir(`pkgs/api`)); + g.createServer = (arg) => { + return async (site_id: string) => { + return arg; + }; + }; + g.server = Bun.serve({ port: g.port, async fetch(req) { @@ -121,18 +127,26 @@ export const createServer = async () => { ) { const res = require(dir(`app/web/server/index.js`)); if (res && res.server) { - g.deploy.server = res.server; + if (typeof res.server === "function") { + g.deploy.server = await res.server(); + } else { + g.deploy.server = res.server; + } } } if (g.deploy.server && g.deploy.index) { - return await g.deploy.server.http({ - handle, - mode: "prod", - req, - server: g.server, - url: { pathname: url.pathname, raw: url }, - index: g.deploy.index, - }); + try { + return await g.deploy.server.http({ + handle, + mode: "prod", + req, + server: g.server, + url: { pathname: url.pathname, raw: url }, + index: g.deploy.index, + }); + } catch (e) { + console.error(e); + } } } diff --git a/pkgs/utils/global.ts b/pkgs/utils/global.ts index 585c854..3591edc 100644 --- a/pkgs/utils/global.ts +++ b/pkgs/utils/global.ts @@ -20,7 +20,7 @@ export type SinglePage = { name: true; content_tree: any; is_default_layout: true; -} +}; type PrasiServer = { ws?: WebSocketHandler<{ url: string }>; @@ -64,6 +64,9 @@ export const g = global as unknown as { br: Record; br_timeout: Set; }; + createServer: ( + arg: PrasiServer & { api: any; db: any } + ) => (site_id: string) => Promise; deploy: { init: boolean; raw: any; diff --git a/pkgs/utils/prisma.ts b/pkgs/utils/prisma.ts index 5d9dc8c..effa592 100644 --- a/pkgs/utils/prisma.ts +++ b/pkgs/utils/prisma.ts @@ -4,7 +4,7 @@ import { $ } from "execa"; import { g } from "./global"; export const preparePrisma = async () => { - if (await existsAsync(dir("app/db/.env"))) { + if ((await existsAsync(dir("app/db/.env"))) && !g.db) { if (g.mode !== "dev") { await $({ cwd: dir(`app/db`) })`bun prisma db pull`; await $({ cwd: dir(`app/db`) })`bun prisma generate`;