1
0
Fork 0
mirror of https://git.sr.ht/~roxwize/mipilin synced 2025-01-31 02:53:36 +00:00
mipilin/routes/util.ts
roxwize e3c09d7f0d
this is the initial commit for my AWESOME website
Signed-off-by: roxwize <rae@roxwize.xyz>
2024-11-13 22:51:08 -05:00

48 lines
1.2 KiB
TypeScript

import { NodePgDatabase } from "drizzle-orm/node-postgres";
import type { Request, Response } from "express";
import { updates } from "../db/schema.js";
import { desc, eq } from "drizzle-orm";
import fs from "node:fs/promises";
let moods: string[], moodsSorted: string[];
export async function getMoods() {
if (!moods)
moods = (await fs.readFile("./static/moods.txt"))
.toString("utf-8")
.split(";");
if (!moodsSorted) moodsSorted = Array.from(moods).sort();
return { moods, moodsSorted };
}
export async function render(
db: NodePgDatabase,
page: string,
title: string,
res: Response,
req: Request,
stuff?: Object
) {
//? maybe you should cache this and save the current mood to the session until it's changed
const { moods } = await getMoods();
let currentMood: string;
if (req.session["loggedIn"]) {
const update = (
await db
.select({ mood: updates.mood })
.from(updates)
.where(eq(updates.user, req.session["uid"]))
.orderBy(desc(updates.date))
.limit(1)
)[0];
currentMood = moods[update?.mood];
}
const o = {
title,
session: req.session,
flashes: req.flash(),
moods,
currentMood
};
res.render(page, { ...o, ...stuff });
}