1
0
silverbullet/plugos/sqlite/deno-sqlite/examples/server.ts

43 lines
975 B
TypeScript
Raw Normal View History

2022-10-19 07:51:25 +00:00
/**
* server.ts
*
* A server which returns the number
* of hits to any given path since
* the server started running.
*
* This is an example, meant to illustrate using
* the API provided by deno-sqlite.
*/
import { serve } from "https://deno.land/std@0.134.0/http/mod.ts";
import { DB } from "../mod.ts";
const db = new DB();
db.query(`
CREATE TABLE visits (
id INTEGER PRIMARY KEY AUTOINCREMENT,
url TEXT NOT NULL,
visited_at TEXT NOT NULL
)
`);
const addVisitQuery = db.prepareQuery(
"INSERT INTO visits (url, visited_at) VALUES (:url, :time)",
);
const countVisitsQuery = db.prepareQuery<[number]>(
"SELECT COUNT(*) FROM visits WHERE url = :url",
);
console.log("Running server on localhost:8080");
await serve((req) => {
addVisitQuery.execute({
url: req.url,
time: new Date(),
});
const [count] = countVisitsQuery.one({ url: req.url });
return new Response(`This page was visited ${count} times!`);
}, { port: 8080 });