refactor(db): migrate staff and app actions from Prisma facade to Drizzle

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-07-31 21:35:05 +02:00
1 parent 9854719cfd
commit ed9c23c702
85 files changed
+2612 -1832

No files matched your search

+47 -41
View File
@@ -1,12 +1,24 @@
import { beforeEach, describe, expect, it, vi } from "vitest";
const { mockUpsert, mockRequirePermission, mockReload, mockRevalidatePath } =
vi.hoisted(() => ({
mockUpsert: vi.fn(),
const {
mockValues,
mockOnDuplicateKeyUpdate,
mockRequirePermission,
mockReload,
mockRevalidatePath,
} = vi.hoisted(() => {
const mockOnDuplicateKeyUpdate = vi.fn().mockResolvedValue(undefined);
const mockValues = vi.fn(() => ({
onDuplicateKeyUpdate: mockOnDuplicateKeyUpdate,
}));
return {
mockValues,
mockOnDuplicateKeyUpdate,
mockRequirePermission: vi.fn(),
mockReload: vi.fn(),
mockRevalidatePath: vi.fn(),
}));
};
});
vi.mock("@/lib/permissions", () => ({
PERMS: {
@@ -16,10 +28,11 @@ vi.mock("@/lib/permissions", () => ({
},
}));
vi.mock("@/lib/prisma", () => ({
prisma: {
websiteSetting: { upsert: mockUpsert },
vi.mock("@/lib/db", () => ({
db: {
insert: vi.fn(() => ({ values: mockValues })),
},
WebsiteSetting: { key: "key", value: "value" },
}));
vi.mock("@/lib/admin/guard", () => ({
@@ -38,6 +51,10 @@ import { saveMaintenance } from "./admin-maintenance";
beforeEach(() => {
vi.clearAllMocks();
mockValues.mockReturnValue({
onDuplicateKeyUpdate: mockOnDuplicateKeyUpdate,
});
mockOnDuplicateKeyUpdate.mockResolvedValue(undefined);
});
describe("saveMaintenance", () => {
@@ -57,37 +74,26 @@ describe("saveMaintenance", () => {
expect(mockRequirePermission).toHaveBeenCalled();
expect(mockUpsert).toHaveBeenCalledTimes(3);
expect(mockUpsert).toHaveBeenCalledWith(
expect(mockValues).toHaveBeenCalledTimes(3);
expect(mockValues).toHaveBeenCalledWith(
expect.objectContaining({
where: { key: "maintenance_enabled" },
update: { value: "1" },
create: expect.objectContaining({
key: "maintenance_enabled",
value: "1",
}),
key: "maintenance_enabled",
value: "1",
}),
);
expect(mockUpsert).toHaveBeenCalledWith(
expect(mockValues).toHaveBeenCalledWith(
expect.objectContaining({
where: { key: "maintenance_message" },
update: { value: "We will be back soon!" },
create: expect.objectContaining({
key: "maintenance_message",
value: "We will be back soon!",
}),
key: "maintenance_message",
value: "We will be back soon!",
}),
);
expect(mockUpsert).toHaveBeenCalledWith(
expect(mockValues).toHaveBeenCalledWith(
expect.objectContaining({
where: { key: "min_maintenance_login_rank" },
update: { value: "3" },
create: expect.objectContaining({
key: "min_maintenance_login_rank",
value: "3",
}),
key: "min_maintenance_login_rank",
value: "3",
}),
);
expect(mockOnDuplicateKeyUpdate).toHaveBeenCalledTimes(3);
expect(mockReload).toHaveBeenCalledOnce();
expect(mockRevalidatePath).toHaveBeenCalledWith("/admin/maintenance");
@@ -106,16 +112,16 @@ describe("saveMaintenance", () => {
await saveMaintenance(fd);
expect(mockUpsert).toHaveBeenCalledWith(
expect(mockValues).toHaveBeenCalledWith(
expect.objectContaining({
where: { key: "maintenance_enabled" },
update: { value: "0" },
key: "maintenance_enabled",
value: "0",
}),
);
expect(mockUpsert).toHaveBeenCalledWith(
expect(mockValues).toHaveBeenCalledWith(
expect.objectContaining({
where: { key: "min_maintenance_login_rank" },
update: { value: "5" },
key: "min_maintenance_login_rank",
value: "5",
}),
);
});
@@ -134,10 +140,10 @@ describe("saveMaintenance", () => {
await saveMaintenance(fd);
expect(mockUpsert).toHaveBeenCalledWith(
expect(mockValues).toHaveBeenCalledWith(
expect.objectContaining({
where: { key: "min_maintenance_login_rank" },
update: { value: "5" },
key: "min_maintenance_login_rank",
value: "5",
}),
);
});
@@ -156,10 +162,10 @@ describe("saveMaintenance", () => {
await saveMaintenance(fd);
expect(mockUpsert).toHaveBeenCalledWith(
expect(mockValues).toHaveBeenCalledWith(
expect.objectContaining({
where: { key: "min_maintenance_login_rank" },
update: { value: "5" },
key: "min_maintenance_login_rank",
value: "5",
}),
);
});