import Database from "better-sqlite3";
import express from "express";
import gazetteer from "../gazetteer.js";
import grimm from "../grimm.js";
import {
getRubricFilters,
comparePages,
getComments,
highlightFilter,
prettyRender,
rubric
} from "../helpers.js";
const router = express.Router();
const db = new Database("./db/site.db");
db.pragma("journal_mode = DELETE");
const filters = Object.assign(getRubricFilters(rubric), highlightFilter);
const displayPage = async (slug, res, next) => {
const page = db
.prepare(
`Select * From editions
Join pagesets
On editions.translates = pagesets.pagesetID
Where editions.editionID = ?`
)
.get(slug);
if (page === undefined) {
return next();
}
page.cache = page?.cache === 1 || page?.cache === true;
const comments = getComments(slug);
const translations = page.translates
? db
.prepare(
`Select * From editions
Join pagesets
On editions.translates = pagesets.pagesetID
Where editions.translates = ?`
)
.all(page.translates)
.sort(comparePages)
: [];
const toSendOver = {
slug: slug,
comments: comments,
translations: translations,
gazetteer: gazetteer,
grimm: grimm,
tr: grimm.translator(page.lang),
baseDomain: "satyrs.eu",
qua: text => `/${page.translates}/${text}`,
compileDebug: true,
filters: filters
};
try {
toSendOver.annexe = (
await import(`../../hypertext/public/${page.translates}/annexe.js`)
).default;
} catch (e) {}
Object.assign(toSendOver, page);
return prettyRender(
res,
next,
`${page.translates}/${page.lang}`,
toSendOver
);
};
router.get("/:pageSlug([^\\.]+)", async (req, res, next) =>
await displayPage(req.params.pageSlug.replace(/\/$/, ""), res, next)
);
router.get("/", async (req, res, next) => await displayPage("index", res, next));
export default router;