2025-05-16 15:54:17 +02:00
|
|
|
"use server";
|
2024-12-12 15:32:33 +01:00
|
|
|
|
2025-09-19 09:58:54 +02:00
|
|
|
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-12 15:32:33 +01:00
|
|
|
|
2024-12-13 14:05:40 +01:00
|
|
|
export const updateDatabaseBackupPolicyAction = userAction
|
2024-12-12 15:32:33 +01:00
|
|
|
.schema(
|
|
|
|
|
z.object({
|
2025-05-16 15:54:17 +02:00
|
|
|
databaseId: z.string(),
|
|
|
|
|
backupPolicy: z.string(),
|
2024-12-12 15:32:33 +01:00
|
|
|
})
|
2025-05-16 15:54:17 +02:00
|
|
|
)
|
2025-09-19 09:58:54 +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();
|
|
|
|
|
|
2025-09-19 09:58:54 +02:00
|
|
|
if (cronPolicy == null) {
|
|
|
|
|
await db.delete(drizzleDb.schemas.retentionPolicy)
|
|
|
|
|
.where(eq(drizzleDb.schemas.retentionPolicy.databaseId, parsedInput.databaseId)).execute();
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-12 15:32:33 +01:00
|
|
|
return {
|
2025-05-16 15:54:17 +02:00
|
|
|
data: updated,
|
|
|
|
|
};
|
|
|
|
|
});
|