REFACTORED - Replace Prisma with Drizzle ORM
CI / quality (push) Waiting to run

- Add lib/db (schema, postgres.js client, enums, seed, migrations) on Drizzle
- Rewrite all lib and admin action queries from Prisma to Drizzle
- Keep existing table/column names so no data migration is needed
- Preserve signed-cookie admin auth unchanged
- Map unique-violation handling from Prisma P2002 to SQLSTATE 23505
- Swap deps, scripts, Makefile, and Dockerfile from Prisma to Drizzle
This commit is contained in:
Moh
2026-08-08 02:09:03 +02:00
parent 0f48381894
commit ba63f75ea8
38 changed files with 3964 additions and 2520 deletions
+5 -7
View File
@@ -1,6 +1,6 @@
"use server";
import { MediaKind } from "@prisma/client";
import { eq } from "drizzle-orm";
import { revalidatePath } from "next/cache";
import { redirect } from "next/navigation";
import { isRedirectError } from "next/dist/client/components/redirect-error";
@@ -11,7 +11,9 @@ import { withFlash } from "@/lib/admin-feedback";
import { countMediaUsageReferences, getMediaAssetById } from "@/lib/media";
import { createStandaloneMediaAsset, deleteMediaAssetAndFile } from "@/lib/media-service";
import { isManagedMediaFilePath } from "@/lib/media-storage";
import { prisma } from "@/lib/prisma";
import { db } from "@/lib/db";
import { mediaAsset } from "@/lib/db/schema";
import { MediaKind } from "@/lib/db/enums";
async function ensureAdmin() {
if (!(await isAdminAuthenticated())) {
@@ -71,11 +73,7 @@ export async function deleteMediaAssetAction(formData: FormData) {
redirect(withFlash(getAdminAppPath("/media"), { error: "Datei wird noch verwendet." }));
}
await prisma.mediaAsset.delete({
where: {
id: asset.id,
},
});
await db.delete(mediaAsset).where(eq(mediaAsset.id, asset.id));
if (isManagedMediaFilePath(asset.url)) {
await deleteMediaAssetAndFile({