fix: dont double cache documents
This commit is contained in:
parent
23f33b7472
commit
4ff7ef7b5c
@ -12,6 +12,7 @@ import { SILVERBULLET_SERVER } from "@lib/env.ts";
|
|||||||
import { imageTable } from "@lib/db/schema.ts";
|
import { imageTable } from "@lib/db/schema.ts";
|
||||||
import { db } from "@lib/db/sqlite.ts";
|
import { db } from "@lib/db/sqlite.ts";
|
||||||
import { eq } from "drizzle-orm/sql";
|
import { eq } from "drizzle-orm/sql";
|
||||||
|
import { createCache } from "@lib/cache.ts";
|
||||||
|
|
||||||
export async function addThumbnailToResource<T extends GenericResource>(
|
export async function addThumbnailToResource<T extends GenericResource>(
|
||||||
res: T,
|
res: T,
|
||||||
@ -70,6 +71,8 @@ export function createCrud<T extends GenericResource>(
|
|||||||
parse: (doc: string, id: string) => T;
|
parse: (doc: string, id: string) => T;
|
||||||
},
|
},
|
||||||
) {
|
) {
|
||||||
|
const cache = createCache<T>(`crud/${prefix}`, { expires: 60 * 1000 });
|
||||||
|
|
||||||
function pathFromId(id: string) {
|
function pathFromId(id: string) {
|
||||||
return `${prefix}${id.replaceAll(":", "")}.md`;
|
return `${prefix}${id.replaceAll(":", "")}.md`;
|
||||||
}
|
}
|
||||||
@ -93,6 +96,7 @@ export function createCrud<T extends GenericResource>(
|
|||||||
}
|
}
|
||||||
function create(id: string, content: string | ArrayBuffer | T) {
|
function create(id: string, content: string | ArrayBuffer | T) {
|
||||||
const path = pathFromId(id);
|
const path = pathFromId(id);
|
||||||
|
cache.set("all", undefined);
|
||||||
if (
|
if (
|
||||||
typeof content === "string" || content instanceof ArrayBuffer
|
typeof content === "string" || content instanceof ArrayBuffer
|
||||||
) {
|
) {
|
||||||
@ -118,6 +122,9 @@ export function createCrud<T extends GenericResource>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function readAll({ sort = "rating" }: { sort?: SortType } = {}) {
|
async function readAll({ sort = "rating" }: { sort?: SortType } = {}) {
|
||||||
|
if (cache.has("all")) {
|
||||||
|
return cache.get("all") as unknown as T[];
|
||||||
|
}
|
||||||
const allDocuments = await getDocuments();
|
const allDocuments = await getDocuments();
|
||||||
const parsed = (await Promise.all(
|
const parsed = (await Promise.all(
|
||||||
allDocuments.filter((d) => {
|
allDocuments.filter((d) => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user