AI Implementation feature(871): Admin Area System: Database Backup/Restore and Danger Zone (#61)

This commit was merged in pull request #61.
This commit is contained in:
2026-07-23 12:10:41 +00:00
parent 6bac67fad7
commit 470ddd30c3
42 changed files with 3996 additions and 55 deletions
@@ -0,0 +1,46 @@
import { z } from 'zod';
import { ADMIN_OPERATION_KINDS, AdminOperationKind } from '../../../../database/entities/admin-operation-token.entity';
export { ADMIN_OPERATION_KINDS };
export type { AdminOperationKind };
export const ADMIN_SYSTEM_BACKUP_FORMAT = 'hipctf-system-backup';
export const ADMIN_SYSTEM_BACKUP_VERSION = 1;
export const ADMIN_SYSTEM_OPERATIONS = ADMIN_OPERATION_KINDS;
export const AdminReauthBodySchema = z.object({
operation: z.enum(ADMIN_OPERATION_KINDS),
password: z.string().min(1).max(1024),
stagingId: z.string().min(1).max(128).optional(),
});
export const AdminDangerConfirmBodySchema = z.object({
operation: z.enum(ADMIN_OPERATION_KINDS),
token: z.string().min(1).max(512),
});
export const AdminRestoreCommitBodySchema = AdminDangerConfirmBodySchema;
export const AdminRestoreValidateResponseSchema = z.object({
stagingId: z.string(),
expiresAt: z.string(),
summary: z.object({
tables: z.array(z.string()).min(1),
tableCounts: z.record(z.string(), z.number().int().nonnegative()),
files: z.number().int().nonnegative(),
totalBytes: z.number().int().nonnegative(),
}),
});
export type AdminReauthBody = z.infer<typeof AdminReauthBodySchema>;
export type AdminDangerConfirmBody = z.infer<typeof AdminDangerConfirmBodySchema>;
export type AdminRestoreCommitBody = z.infer<typeof AdminRestoreCommitBodySchema>;
export type AdminRestoreValidateResponse = z.infer<typeof AdminRestoreValidateResponseSchema>;
export interface ConfirmationTokenResponse {
operation: AdminOperationKind;
token: string;
expiresAt: string;
stagingId?: string;
}