refactor(db): migrate staff and app actions from Prisma facade to Drizzle
Co-authored-by: Cursor <[email protected]>
This commit is contained in:
1 parent
9854719cfd
commit
ed9c23c702
85 files changed
+2612
-1832
No files matched your search
@@ -1,11 +1,11 @@
|
||||
import { env } from "@/env";
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import { db, WebsiteWordfilter } from "@/lib/db";
|
||||
|
||||
// AtomCMS-faithful content moderation, used by user-generated-content actions
|
||||
// (article comments, mottos, registration, etc.) before they touch the DB.
|
||||
//
|
||||
// Two layers, evaluated in order:
|
||||
// 1. website_wordfilter — the CMS-owned blocklist (prisma.websiteWordfilter),
|
||||
// 1. website_wordfilter — the CMS-owned blocklist (WebsiteWordfilter),
|
||||
// mirroring AtomCMS's word filter. Loaded once and cached in-process like
|
||||
// site-settings, so the common path never hits the DB.
|
||||
// 2. OpenAI Moderations — only when OPENAI_API_KEY is set. A flagged result
|
||||
@@ -40,9 +40,9 @@ async function loadWordFilter(): Promise<string[]> {
|
||||
now - wordFilterLoadedAt > WORD_FILTER_TTL_MS
|
||||
) {
|
||||
try {
|
||||
const rows = await prisma.websiteWordfilter.findMany({
|
||||
select: { word: true },
|
||||
});
|
||||
const rows = await db
|
||||
.select({ word: WebsiteWordfilter.word })
|
||||
.from(WebsiteWordfilter);
|
||||
wordFilterCache = rows
|
||||
.map((r) => r.word.trim().toLowerCase())
|
||||
.filter((w) => w.length > 0);
|
||||
|
||||
Reference in new issue
Block a user