Connection
Source:
src/Prisma/Connection.ts
A Prisma database connection/API key.
Creating a Connection
Section titled “Creating a Connection”const connection = yield* Prisma.Connection("api", { database: database.databaseId,});Binding to Platforms
Section titled “Binding to Platforms”Pass database URLs to Compute env
const connection = yield* Prisma.Connection("api", { database,});
const app = yield* Prisma.Compute("api", { project, appName: "api", main: import.meta.filename, env: { DATABASE_URL: connection.databaseUrl, DIRECT_URL: connection.directConnectionString, },});Use a connection inside an Effect-native Compute app
export default Prisma.Compute( "api", { project, appName: "api", main: import.meta.filename }, Effect.gen(function* () { const db = yield* Prisma.Connect(connection); const sql = yield* SQL.Postgres({ url: db.databaseUrl }); return { fetch: Effect.gen(function* () { const users = yield* sql`SELECT * FROM users`; return yield* HttpServerResponse.json(users); }), }; }).pipe(Effect.provide(Prisma.ConnectBinding)),);Use a connection inside an Effect-native Lambda function
export default AWS.Lambda.Function( "api", { main: import.meta.filename, url: true }, Effect.gen(function* () { const db = yield* Prisma.Connect(connection); const sql = yield* SQL.Postgres({ url: db.databaseUrl }); return { fetch: Effect.gen(function* () { const users = yield* sql`SELECT * FROM users`; return yield* HttpServerResponse.json(users); }), }; }).pipe(Effect.provide(Prisma.ConnectBinding)),);Use a connection inside an Effect-native Cloudflare Worker
export default Cloudflare.Worker( "api", { main: import.meta.filename }, Effect.gen(function* () { const db = yield* Prisma.Connect(connection); return { fetch: Effect.gen(function* () { const databaseUrl = yield* db.databaseUrl; return yield* HttpServerResponse.text("connected"); }), }; }).pipe(Effect.provide(Prisma.ConnectBinding)),);Connecting over Hyperdrive
Section titled “Connecting over Hyperdrive”const hyperdrive = yield* Cloudflare.Hyperdrive.Connection("api-hd", { origin: connection.origin.as<Prisma.PostgresOrigin>(),});
export default Cloudflare.Worker( "api", { main: import.meta.filename, compatibility: { flags: ["nodejs_compat"] } }, Effect.gen(function* () { const hd = yield* Cloudflare.Hyperdrive.Connect(hyperdrive); const sql = yield* SQL.Postgres({ url: hd.connectionString }); return { fetch: Effect.gen(function* () { const users = yield* sql`SELECT * FROM users`; return yield* HttpServerResponse.json(users); }), }; }).pipe(Effect.provide(Cloudflare.Hyperdrive.ConnectBinding)),);