82 lines
1.4 KiB
TypeScript
Raw Normal View History

2024-12-11 21:06:26 +00:00
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);