* feat: export snapshot as tar file chore(mutext): prevent double lock release * chore: pr feedbacks * fix: dump single file no tar * chore: pr feedbacks
85 lines
3.4 KiB
TypeScript
85 lines
3.4 KiB
TypeScript
import { type } from "arktype";
|
|
import { resticBackupProgressMetricsSchema, resticBackupRunSummarySchema } from "~/schemas/restic-dto";
|
|
|
|
export const backupEventStatusSchema = type("'success' | 'error' | 'stopped' | 'warning'");
|
|
export const restoreEventStatusSchema = type("'success' | 'error'");
|
|
|
|
const backupEventBaseSchema = type({
|
|
scheduleId: "string",
|
|
volumeName: "string",
|
|
repositoryName: "string",
|
|
});
|
|
|
|
const organizationScopedSchema = type({
|
|
organizationId: "string",
|
|
});
|
|
|
|
const restoreEventBaseSchema = type({
|
|
repositoryId: "string",
|
|
snapshotId: "string",
|
|
});
|
|
|
|
const dumpStartedEventSchema = type({
|
|
repositoryId: "string",
|
|
snapshotId: "string",
|
|
path: "string",
|
|
filename: "string",
|
|
});
|
|
|
|
const restoreProgressMetricsSchema = type({
|
|
seconds_elapsed: "number",
|
|
percent_done: "number",
|
|
total_files: "number",
|
|
files_restored: "number",
|
|
total_bytes: "number",
|
|
bytes_restored: "number",
|
|
});
|
|
|
|
export const backupStartedEventSchema = backupEventBaseSchema;
|
|
|
|
export const backupProgressEventSchema = backupEventBaseSchema.and(resticBackupProgressMetricsSchema);
|
|
|
|
export const backupCompletedEventSchema = backupEventBaseSchema.and(
|
|
type({
|
|
status: backupEventStatusSchema,
|
|
summary: resticBackupRunSummarySchema.optional(),
|
|
}),
|
|
);
|
|
|
|
export const restoreStartedEventSchema = restoreEventBaseSchema;
|
|
|
|
export const restoreProgressEventSchema = restoreEventBaseSchema.and(restoreProgressMetricsSchema);
|
|
|
|
export const restoreCompletedEventSchema = restoreEventBaseSchema.and(
|
|
type({ status: restoreEventStatusSchema, error: "string?" }),
|
|
);
|
|
|
|
export const serverBackupStartedEventSchema = organizationScopedSchema.and(backupStartedEventSchema);
|
|
|
|
export const serverBackupProgressEventSchema = organizationScopedSchema.and(backupProgressEventSchema);
|
|
|
|
export const serverBackupCompletedEventSchema = organizationScopedSchema.and(backupCompletedEventSchema);
|
|
|
|
export const serverRestoreStartedEventSchema = organizationScopedSchema.and(restoreStartedEventSchema);
|
|
|
|
export const serverRestoreProgressEventSchema = organizationScopedSchema.and(restoreProgressEventSchema);
|
|
|
|
export const serverRestoreCompletedEventSchema = organizationScopedSchema.and(restoreCompletedEventSchema);
|
|
|
|
export const serverDumpStartedEventSchema = organizationScopedSchema.and(dumpStartedEventSchema);
|
|
|
|
export type BackupEventStatusDto = typeof backupEventStatusSchema.infer;
|
|
export type BackupStartedEventDto = typeof backupStartedEventSchema.infer;
|
|
export type BackupProgressEventDto = typeof backupProgressEventSchema.infer;
|
|
export type BackupCompletedEventDto = typeof backupCompletedEventSchema.infer;
|
|
export type RestoreStartedEventDto = typeof restoreStartedEventSchema.infer;
|
|
export type RestoreProgressEventDto = typeof restoreProgressEventSchema.infer;
|
|
export type RestoreCompletedEventDto = typeof restoreCompletedEventSchema.infer;
|
|
export type DumpStartedEventDto = typeof dumpStartedEventSchema.infer;
|
|
export type ServerBackupStartedEventDto = typeof serverBackupStartedEventSchema.infer;
|
|
export type ServerBackupProgressEventDto = typeof serverBackupProgressEventSchema.infer;
|
|
export type ServerBackupCompletedEventDto = typeof serverBackupCompletedEventSchema.infer;
|
|
export type ServerRestoreStartedEventDto = typeof serverRestoreStartedEventSchema.infer;
|
|
export type ServerRestoreProgressEventDto = typeof serverRestoreProgressEventSchema.infer;
|
|
export type ServerRestoreCompletedEventDto = typeof serverRestoreCompletedEventSchema.infer;
|
|
export type ServerDumpStartedEventDto = typeof serverDumpStartedEventSchema.infer;
|