1import { Client } from "pg";
2import type { PostgresFnEnv } from "./async-postgres-fn.ts";
3
4/**
5 * Async (non-Effect) canvas Function. `DATABASE_URL` is a string env var
6 * declared on the Function (`env: { DATABASE_URL: db.connectionUri }`).
7 * `InferEnv` types `env.DATABASE_URL` as `string`.
8 */
9export default {
10 async fetch(_request: Request, env: PostgresFnEnv): Promise<Response> {
11 const client = new Client({
12 connectionString: env.DATABASE_URL,
13 });
14 await client.connect();
15 try {
16 const result = await client.query("select 1 as ok");
17 return Response.json({ rows: result.rows });
18 } catch (error) {
19 return Response.json(
20 { ok: false, error: String(error) },
21 { status: 500 },
22 );
23 } finally {
24 await client.end();
25 }
26 },
27};