| 1 | import { Client } from "pg"; |
| 2 | import 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 | */ |
| 9 | export 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 | }; |