Files
portabase/src/components/wrappers/dashboard/database/restore-form.schema.ts
T
2025-05-16 15:54:17 +02:00

40 lines
1.1 KiB
TypeScript

import { z } from "zod";
const ImmediateExecutionSchema = z.object({
executionMode: z.literal("immediate"),
});
const ScheduledExecutionSchema = z.object({
executionMode: z.literal("scheduled"),
scheduledDatetime: z.date(),
});
const RemoteImmediateSchema = z
.object({
backupLocation: z.literal("remote-file"),
})
.merge(ImmediateExecutionSchema);
const RemoteScheduledSchema = z
.object({
backupLocation: z.literal("remote-file"),
})
.merge(ScheduledExecutionSchema);
const DesktopImmediateSchema = z
.object({
backupLocation: z.literal("desktop-file"),
uploadedBackupFile: z.instanceof(File),
})
.merge(ImmediateExecutionSchema);
const DesktopScheduledSchema = z
.object({
backupLocation: z.literal("desktop-file"),
uploadedBackupFile: z.instanceof(File),
})
.merge(ScheduledExecutionSchema);
export const RestoreSchema = z.union([RemoteImmediateSchema, RemoteScheduledSchema, DesktopImmediateSchema, DesktopScheduledSchema]);
export type RestoreType = z.infer<typeof RestoreSchema>;