Add embedded PGlite support as zero-config database option
Add @electric-sql/pglite so the server can run without an external Postgres instance. When DATABASE_URL is not set, the server auto-creates an embedded PGlite database in ./data/pglite with schema push on startup. - Add createPgliteDb() alongside the existing createDb() - Make DATABASE_URL optional in server config - Update drizzle config to glob schema files - Update migrate script to support both Postgres and PGlite - Add data/ to .gitignore for local PGlite storage Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,16 +1,13 @@
|
||||
export interface Config {
|
||||
port: number;
|
||||
databaseUrl: string;
|
||||
databaseUrl: string | undefined;
|
||||
serveUi: boolean;
|
||||
}
|
||||
|
||||
export function loadConfig(): Config {
|
||||
const databaseUrl = process.env.DATABASE_URL;
|
||||
if (!databaseUrl) throw new Error("DATABASE_URL is required");
|
||||
|
||||
return {
|
||||
port: Number(process.env.PORT) || 3100,
|
||||
databaseUrl,
|
||||
databaseUrl: process.env.DATABASE_URL,
|
||||
serveUi: process.env.SERVE_UI === "true",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
import { createDb } from "@paperclip/db";
|
||||
import { createDb, createPgliteDb } from "@paperclip/db";
|
||||
import { createApp } from "./app.js";
|
||||
import { loadConfig } from "./config.js";
|
||||
import { logger } from "./middleware/logger.js";
|
||||
|
||||
const config = loadConfig();
|
||||
const db = createDb(config.databaseUrl);
|
||||
const app = createApp(db, { serveUi: config.serveUi });
|
||||
|
||||
let db;
|
||||
if (config.databaseUrl) {
|
||||
db = createDb(config.databaseUrl);
|
||||
} else {
|
||||
logger.info("No DATABASE_URL set — using embedded PGlite (./data/pglite)");
|
||||
db = await createPgliteDb("./data/pglite");
|
||||
logger.info("PGlite ready, schema pushed");
|
||||
}
|
||||
|
||||
const app = createApp(db as any, { serveUi: config.serveUi });
|
||||
|
||||
app.listen(config.port, () => {
|
||||
logger.info(`Server listening on :${config.port}`);
|
||||
|
||||
Reference in New Issue
Block a user