diff --git a/src/create.js b/src/create.js index 5a2e669..9a10909 100644 --- a/src/create.js +++ b/src/create.js @@ -1,5 +1,5 @@ -import { nanoid } from "nanoid"; import { BASE_URL } from "./constants.js"; +import { createGist } from "./database.js"; // keep these vars on frontend as its needed to decrypt import { ALGORITHM, ALGORITHM_PARAMS, KEY_USAGE } from "../static/subtle.mjs"; @@ -22,7 +22,7 @@ export const encrypt = async (decrypted) => { export const create = async (buffer) => { const { iv, k, encrypted } = await encrypt(buffer); - const uuid = nanoid(22); + const uuid = createGist(iv, encrypted); return `${BASE_URL}/${uuid}#${k}`; }; diff --git a/src/database.js b/src/database.js new file mode 100644 index 0000000..4ede924 --- /dev/null +++ b/src/database.js @@ -0,0 +1,29 @@ +import { DatabaseSync } from "node:sqlite"; +import { nanoid } from "nanoid"; + +const db = new DatabaseSync(":memory:"); + +db.exec(` + CREATE TABLE IF NOT EXISTS gists ( + uuid TEXT PRIMARY KEY, + iv TEXT NOT NULL, + data BLOB NOT NULL, + createAt DATETIME DEFAULT CURRENT_TIMESTAMP + ); +`); + +export const createGist = (iv, data) => { + const uuid = nanoid(22); + + const query = db.prepare( + "INSERT INTO gists (uuid, iv, data) VALUES (?, ?, ?)" + ); + query.run(uuid, iv.toString(), Buffer.from(data)); + + return uuid; +}; + +export const getGists = () => { + const query = db.prepare("SELECT * FROM gists"); + return query.all(); +}; diff --git a/src/routes.js b/src/routes.js index 8e82f21..e37a7a8 100644 --- a/src/routes.js +++ b/src/routes.js @@ -1,5 +1,6 @@ import Router from "@koa/router"; import { create } from "./create.js"; +import { getGists } from "./database.js"; export const router = new Router(); @@ -16,6 +17,8 @@ router.post("/", async (ctx, next) => { }); router.get("/", async (ctx, next) => { + const gists = getGists(); + console.log(gists); await ctx.render("home"); });