Files
sistema_base/apps/web/feactures/statistics/schemas/statistics-schema.ts

59 lines
1.4 KiB
TypeScript

import { z } from 'zod';
// Esquema para QuestionStat
export const QuestionStatSchema = z.object({
questionId: z.string(),
label: z.string(),
count: z.number(),
});
// Esquema para SurveyDetail
export const SurveyDetailSchema = z.object({
id: z.number(),
title: z.string(),
description: z.string(),
totalResponses: z.number(),
targetAudience: z.string(),
createdAt: z.string(),
closingDate: z.string().optional(),
questionStats: z.array(QuestionStatSchema),
});
// Esquema para SurveyStatisticsData
export const SurveyStatisticsDataSchema = z.object({
totalSurveys: z.number(),
totalResponses: z.number(),
completionRate: z.number(),
surveysByMonth: z.array(
z.object({
month: z.string(),
count: z.number(),
})
),
responsesByAudience: z.array(
z.object({
name: z.string(),
value: z.number(),
})
),
responseDistribution: z.array(
z.object({
title: z.string(),
responses: z.number(),
})
),
surveyDetails: z.array(SurveyDetailSchema),
// surveyDetails: z.array(z.any()),
});
// Response schemas for the API create, update
export const SurveyStatisticsSchema = z.object({
message: z.string(),
data: SurveyStatisticsDataSchema,
});
// Tipos inferidos de Zod
export type SurveyStatisticsType = z.infer<typeof SurveyStatisticsSchema>;
export type SurveyDetailType = z.infer<typeof SurveyDetailSchema>;
export type QuestionStatType = z.infer<typeof QuestionStatSchema>;