47 lines
1.6 KiB
TypeScript
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;
|
|
}
|