Files
HIPCTF2/backend/src/modules/admin/system/dto/admin-system.dto.ts
T

47 lines
1.6 KiB
TypeScript

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;
}