Files
portabase/src/features/database/cron.action.ts
T

37 lines
1.0 KiB
TypeScript
Raw Normal View History

2025-05-16 15:54:17 +02:00
"use server";
import {z} from "zod";
import {db} from "@/db";
import {eq} from "drizzle-orm";
2025-07-16 12:36:11 +02:00
import * as drizzleDb from "@/db";
2025-09-23 20:35:48 +02:00
import {userAction} from "@/lib/safe-actions/actions";
2024-12-13 14:05:40 +01:00
export const updateDatabaseBackupPolicyAction = userAction
.schema(
z.object({
2025-05-16 15:54:17 +02:00
databaseId: z.string(),
backupPolicy: z.string(),
})
2025-05-16 15:54:17 +02:00
)
.action(async ({parsedInput}) => {
2025-05-16 15:54:17 +02:00
const cronPolicy = parsedInput.backupPolicy === "" ? null : parsedInput.backupPolicy;
const [updated] = await db
2025-07-16 12:36:11 +02:00
.update(drizzleDb.schemas.database)
2025-05-16 15:54:17 +02:00
.set({
backupPolicy: cronPolicy,
})
2025-07-16 12:36:11 +02:00
.where(eq(drizzleDb.schemas.database.id, parsedInput.databaseId))
2025-05-16 15:54:17 +02:00
.returning()
.execute();
if (cronPolicy == null) {
await db.delete(drizzleDb.schemas.retentionPolicy)
.where(eq(drizzleDb.schemas.retentionPolicy.databaseId, parsedInput.databaseId)).execute();
}
return {
2025-05-16 15:54:17 +02:00
data: updated,
};
});