Spaces:
Paused
Paused
File size: 2,038 Bytes
9853396 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import { z } from 'zod';
import { pageInfoSchema } from '@/gql/pagination';
// Project schema based on GraphQL schema
export const projectSchema = z.object({
id: z.string(),
createdAt: z.coerce.date(),
updatedAt: z.coerce.date(),
name: z.string(),
description: z.string(),
status: z.enum(['active', 'archived']),
});
export type Project = z.infer<typeof projectSchema>;
// Project Connection schema for GraphQL pagination
export const projectEdgeSchema = z.object({
node: projectSchema,
cursor: z.string(),
});
export const projectConnectionSchema = z.object({
edges: z.array(projectEdgeSchema),
pageInfo: pageInfoSchema,
totalCount: z.number(),
});
export type ProjectConnection = z.infer<typeof projectConnectionSchema>;
// Create Project Input - factory function for i18n support
export const createProjectInputSchemaFactory = (t: (key: string) => string) =>
z.object({
name: z.string().min(1, t('projects.validation.nameRequired')),
description: z.string().optional(),
});
// Default schema for backward compatibility
export const createProjectInputSchema = z.object({
name: z.string().min(1, 'Project name is required'),
description: z.string().optional(),
});
export type CreateProjectInput = z.infer<typeof createProjectInputSchema>;
// Update Project Input - factory function for i18n support
export const updateProjectInputSchemaFactory = (t: (key: string) => string) =>
z.object({
name: z.string().min(1, t('projects.validation.nameRequired')),
description: z.string().optional(),
});
// Default schema for backward compatibility
export const updateProjectInputSchema = z.object({
name: z.string().min(1, 'Project name is required'),
description: z.string().optional(),
});
export type UpdateProjectInput = z.infer<typeof updateProjectInputSchema>;
// Project List schema for table display
export const projectListSchema = z.array(projectSchema);
export type ProjectList = z.infer<typeof projectListSchema>;
|