1import{Pool}from"https://deno.land/x/postgres@v0.19.3/mod.ts";
2import{serve}from"https://deno.land/std@0.224.0/http/server.ts";
3
4interfaceQueryPayload{
5sql:string;
6params?:unknown[];
7connString:string;
8}
9
10constpool=newPool(Deno.env.get("PG_CONNECTION")!,5);
11
12asyncfunctionhandleQuery(req:Request):Promise<Response>{
13if(req.method!=="POST"){
14returnnewResponse("Method not allowed",{status:405});
15}
16
17constbody:QueryPayload=awaitreq.json();
18constclient=awaitpool.connect();
19
20try{
21constresult=awaitclient.queryObject(body.sql,body.params??[]);
22returnnewResponse(JSON.stringify(result.rows),{
23headers:{"content-type":"application/json"},
24});
25}catch(err){
26returnnewResponse(
27JSON.stringify({error:(errasError).message}),
28{status:500,headers:{"content-type":"application/json"}}
29);
30}finally{
31client.release();
32}
33}
34
35serve(handleQuery,{port:8080});