diff --git a/apps/cloud/package.json b/apps/cloud/package.json index e9e680bf23..dccaa6843e 100644 --- a/apps/cloud/package.json +++ b/apps/cloud/package.json @@ -28,7 +28,6 @@ "react-dom": "catalog:" }, "devDependencies": { - "@electric-sql/pglite": "^0.4.3", "@tailwindcss/vite": "catalog:", "@types/pg": "^8.15.4", "@types/react": "catalog:", diff --git a/apps/cloud/src/env.ts b/apps/cloud/src/env.ts index 1466de9a92..4c2c7bc233 100644 --- a/apps/cloud/src/env.ts +++ b/apps/cloud/src/env.ts @@ -12,7 +12,6 @@ const sharedShape = { const serverShape = { DATABASE_URL: Env.stringOr("DATABASE_URL", ""), - PGLITE_DATA_DIR: Env.stringOr("PGLITE_DATA_DIR", ".pglite"), ENCRYPTION_KEY: Env.stringOr( "ENCRYPTION_KEY", "local-dev-encryption-key", @@ -28,7 +27,6 @@ type SharedEnv = Readonly<{ type ServerEnv = SharedEnv & Readonly<{ DATABASE_URL: string; - PGLITE_DATA_DIR: string; ENCRYPTION_KEY: string; WORKOS_API_KEY: string; WORKOS_CLIENT_ID: string; diff --git a/apps/cloud/src/services/db.ts b/apps/cloud/src/services/db.ts index a84f03eb39..8abadbdd1a 100644 --- a/apps/cloud/src/services/db.ts +++ b/apps/cloud/src/services/db.ts @@ -30,6 +30,11 @@ const resolveHyperdriveUrl = Effect.tryPromise({ const resolveConnectionString = resolveHyperdriveUrl.pipe( Effect.map((url) => url ?? (server.DATABASE_URL || undefined)), + Effect.flatMap((url) => + url + ? Effect.succeed(url) + : Effect.fail(new Error("No database connection string available (set DATABASE_URL or configure Hyperdrive)")), + ), ); // --------------------------------------------------------------------------- @@ -47,22 +52,6 @@ const acquirePostgres = (connectionString: string) => const releasePostgres = ({ pool }: { pool: { end: () => Promise } }) => Effect.promise(() => pool.end()).pipe(Effect.orElseSucceed(() => undefined)); -// --------------------------------------------------------------------------- -// PGlite — local dev fallback -// --------------------------------------------------------------------------- - -const acquirePglite = Effect.tryPromise(async () => { - const { PGlite } = await import("@electric-sql/pglite"); - const { drizzle } = await import("drizzle-orm/pglite"); - const client = new PGlite(server.PGLITE_DATA_DIR); - return { db: drizzle(client, { schema }) as DrizzleDb, client }; -}); - -const releasePglite = ({ client }: { client: { close?: () => Promise } }) => - Effect.promise(() => client.close?.() ?? Promise.resolve()).pipe( - Effect.orElseSucceed(() => undefined), - ); - // --------------------------------------------------------------------------- // Service // --------------------------------------------------------------------------- @@ -75,16 +64,10 @@ export class DbService extends Context.Tag("@executor/cloud/DbService")< this, Effect.gen(function* () { const connectionString = yield* resolveConnectionString; - - if (connectionString) { - const { db } = yield* Effect.acquireRelease( - acquirePostgres(connectionString), - releasePostgres, - ); - return db; - } - - const { db } = yield* Effect.acquireRelease(acquirePglite, releasePglite); + const { db } = yield* Effect.acquireRelease( + acquirePostgres(connectionString), + releasePostgres, + ); return db; }), );