import { Hono } from "jsr:@hono/hono"; import { Database } from "jsr:@db/sqlite"; const db = new Database("./db/test.sqlite"); db.prepare( ` CREATE TABLE IF NOT EXISTS Public_Keys ( deviceID INTEGER PRIMARY KEY, public_key_pem TEXT NOT NULL ); ` ).run() function getFromDB(deviceID: number) { return db.prepare( ` SELECT public_key_pem FROM Public_Keys WHERE deviceID=(?); ` ).all(deviceID) } function getSingleFromDB(deviceID: number) { const values = getFromDB(deviceID) if (!values) { return null } return values[0] } function insertIntoDB(deviceID: number, publicKey: string) { db.prepare( ` INSERT INTO Public_Keys (deviceID, public_key_pem) VALUES (?, ?); ` ).run(deviceID, publicKey) } const app = new Hono(); app.get("/", (c) => { return c.text("Hello Deno!"); }); app.get("/key/:deviceID", async (context) => { const deviceID: number = parseInt(context.req.param("deviceID")) let key: any = getSingleFromDB(deviceID) if (!key) { return context.body(null, { status: 404 }) } return context.json({ publicKey: key.public_key_pem }) }) app.post("/key", async (context) => { const reqBody = await context.req.json() // UGLY: Considering always a positive response insertIntoDB(reqBody.deviceID, reqBody.publicKey) return context.body(null, { status: 201 }) }) Deno.serve({ port: 80 }, app.fetch);