import { z } from "zod"; import { ObjectType } from "./enum"; export const AuthSchema = { signUpRequest: z.object({ username: z.string(), password: z.string(), deptId: z.string().nullish(), officerId: z.string().nullish(), showname: z.string().nullish(), phoneNumber: z.string().nullish(), }), refreshTokenRequest: z.object({ refreshToken: z.string(), sessionId: z.string(), }), logoutRequest: z.object({ refreshToken: z.string(), sessionId: z.string(), }), signInRequset: z.object({ username: z.string().nullish(), password: z.string().nullish(), phoneNumber: z.string().nullish(), }), changePassword: z.object({ phoneNumber: z.string().nullish(), newPassword: z.string(), renewPassword: z.string(), username: z.string().nullish(), }), refreshToken: z.object({ refreshToken: z.string(), }), logout: z.object({ refreshToken: z.string(), }), }; const SortModel = z.object({ colId: z.string(), sort: z.enum(["asc", "desc"]), }); export const UpdateOrderSchema = z.object({ id: z.string(), overId: z.string(), }); export const RowRequestSchema = z.object({ startRow: z.number(), endRow: z.number(), rowGroupCols: z.array( z.object({ id: z.string(), displayName: z.string(), field: z.string(), }) ), valueCols: z.array( z.object({ id: z.string().nullish(), displayName: z.string().nullish(), aggFunc: z.string().nullish(), field: z.string(), }) ), pivotCols: z.array(z.any()).nullish(), pivotMode: z.boolean().nullish(), groupKeys: z.array(z.any()), filterModel: z.any().nullish(), sortModel: z.array(SortModel).nullish(), includeDeleted: z.boolean().nullish() }); export const StaffMethodSchema = { create: z.object({ showname: z.string().nullish(), username: z.string(), phoneNumber: z.string().nullish(), domainId: z.string().nullish(), password: z.string().nullish(), deptId: z.string().nullish(), officerId: z.string().nullish(), emitChange: z.boolean().nullish(), hashedPassword: z.string().nullish(), }), update: z.object({ id: z.string(), showname: z.string().nullish(), username: z.string().nullish(), domainId: z.string().nullish(), deptId: z.string().nullish(), phoneNumber: z.string().nullish(), order: z.number().nullish(), registerToken: z.string().nullish(), password: z.string().nullish(), officerId: z.string().nullish(), }), delete: z.object({ id: z.string(), }), deleteMany: z.object({ ids: z.array(z.string()), }), findByDept: z.object({ deptId: z.string(), domainId: z.string().nullish(), }), findMany: z.object({ keyword: z.string().nullish(), domainId: z.string().nullish(), deptId: z.string().nullish(), limit: z.number().nullish(), ids: z.array(z.string()).nullish(), }), findUnique: z.object({ phoneNumber: z.string().nullish(), id: z.string().nullish(), }), paginate: z.object({ page: z.number(), pageSize: z.number(), domainId: z.string().nullish(), deptId: z.string().nullish(), ids: z.array(z.string()).nullish(), }), getRows: RowRequestSchema.extend({ domainId: z.string().nullish(), }), }; export const DepartmentMethodSchema = { create: z.object({ name: z.string(), termIds: z.array(z.string()).nullish(), parentId: z.string().nullish(), isDomain: z.boolean().nullish(), }), getRows: RowRequestSchema.extend({ parentId: z.string().nullish(), }), update: z.object({ id: z.string(), name: z.string().nullish(), termIds: z.array(z.string()).nullish(), parentId: z.string().nullish(), deletedAt: z.date().nullish(), order: z.number().nullish(), isDomain: z.boolean().nullish(), }), delete: z.object({ id: z.string(), }), findMany: z.object({ keyword: z.string().nullish(), ids: z.array(z.string()).nullish(), limit: z.number().nullish(), domain: z.boolean().nullish(), }), findById: z.object({ id: z.string(), }), paginate: z.object({ page: z.number(), pageSize: z.number(), ids: z.array(z.string()).nullish(), }), getSimpleTree: z.object({ deptIds: z.array(z.string().nullish()).nullish(), parentId: z.string().nullish(), domain: z.boolean().nullish(), rootId: z.string().nullish(), }), }; export const TransformMethodSchema = { importStaffs: z.object({ base64: z.string(), domainId: z.string().nullish(), }), importTerms: z.object({ base64: z.string(), domainId: z.string().nullish(), taxonomyId: z.string().nullish(), parentId: z.string().nullish(), }), importDepts: z.object({ base64: z.string(), domainId: z.string().nullish(), parentId: z.string().nullish(), }), }; export const TermMethodSchema = { getRows: RowRequestSchema.extend({ parentId: z.string().nullish(), domainId: z.string().nullish(), taxonomyId: z.string().nullish(), }), create: z.object({ name: z.string(), description: z.string().nullish(), domainId: z.string().nullish(), // slug: z.string().min(1), // Assuming slug cannot be empty parentId: z.string().nullish(), // Optional field taxonomyId: z.string(), // Optional field watchStaffIds: z.array(z.string()).nullish(), watchDeptIds: z.array(z.string()).nullish(), }), update: z.object({ id: z.string(), description: z.string().nullish(), parentId: z.string().nullish(), domainId: z.string().nullish(), name: z.string().nullish(), // slug: z.string().nullish(), taxonomyId: z.string().nullish(), order: z.number().nullish(), watchStaffIds: z.array(z.string()).nullish(), watchDeptIds: z.array(z.string()).nullish(), }), delete: z.object({ id: z.string(), }), paginate: z.object({ page: z.number().min(1), pageSize: z.number().min(1), }), deleteMany: z.object({ ids: z.array(z.string()), }), findManyWithCursor: z.object({ cursor: z.string().nullish(), search: z.string().nullish(), limit: z.number().min(1).max(100).nullish(), taxonomyId: z.string().nullish(), taxonomySlug: z.string().nullish(), id: z.string().nullish(), initialIds: z.array(z.string()).nullish(), }), getChildren: z.object({ parentId: z.string().nullish(), domainId: z.string().nullish(), taxonomyId: z.string().nullish(), cursor: z.string().nullish(), limit: z.number().min(1).max(100).nullish(), }), getSimpleTree: z.object({ termIds: z.array(z.string().nullish()).nullish(), parentId: z.string().nullish(), taxonomyId: z.string().nullish(), domainId: z.string().nullish(), }), findMany: z.object({ keyword: z.string().nullish(), ids: z.array(z.string()).nullish(), taxonomyId: z.string().nullish(), taxonomySlug: z.string().nullish(), limit: z.number().nullish(), }), getTreeData: z.object({ taxonomyId: z.string().nullish(), taxonomySlug: z.string().nullish(), domainId: z.string().nullish(), }), }; export const RoleMapMethodSchema = { create: z.object({ objectId: z.string(), roleId: z.string(), domainId: z.string(), objectType: z.nativeEnum(ObjectType), }), update: z.object({ id: z.string(), objectId: z.string().nullish(), roleId: z.string().nullish(), domainId: z.string().nullish(), objectType: z.nativeEnum(ObjectType).nullish(), }), setRolesForObject: z.object({ objectId: z.string(), roleIds: z.array(z.string()), domainId: z.string(), objectType: z.nativeEnum(ObjectType), }), setRoleForObjects: z.object({ objectIds: z.array(z.string()), roleId: z.string(), domainId: z.string().nullish(), objectType: z.nativeEnum(ObjectType), }), deleteMany: z.object({ ids: z.array(z.string()), }), paginate: z.object({ page: z.number().min(1), pageSize: z.number().min(1), domainId: z.string().nullish(), roleId: z.string().nullish(), }), deleteWithObject: z.object({ objectId: z.string(), }), getRoleMapDetail: z.object({ roleId: z.string(), domainId: z.string().nullish(), }), getPermsForObject: z.object({ domainId: z.string(), staffId: z.string(), deptId: z.string(), }), getRows: RowRequestSchema.extend({ roleId: z.string().nullish(), domainId: z.string().nullish(), }), getStaffsNotMap: z.object({ domainId: z.string().nullish(), roleId: z.string().nullish(), }), }; export const RoleMethodSchema = { create: z.object({ name: z.string(), permissions: z.array(z.string()).nullish(), }), update: z.object({ id: z.string(), name: z.string().nullish(), permissions: z.array(z.string()).nullish(), }), deleteMany: z.object({ ids: z.array(z.string()), }), paginate: z.object({ page: z.number().nullish(), pageSize: z.number().nullish(), }), findMany: z.object({ keyword: z.string().nullish(), }), }; export const TaxonomyMethodSchema = { create: z.object({ name: z.string(), slug: z.string(), objectType: z.array(z.nativeEnum(ObjectType)).nullish(), }), delete: z.object({ id: z.string(), }), findByName: z.object({ name: z.string(), }), findBySlug: z.object({ slug: z.string(), }), findById: z.object({ id: z.string(), }), deleteMany: z.object({ ids: z.array(z.string()), }), update: z.object({ id: z.string(), name: z.string().nullish(), slug: z.string().nullish(), order: z.number().nullish(), objectType: z.array(z.nativeEnum(ObjectType)).nullish(), }), paginate: z.object({ page: z.number().min(1), pageSize: z.number().min(1), }), getAll: z.object({ type: z.nativeEnum(ObjectType).nullish(), }), }; export const BaseCursorSchema = z.object({ cursor: z.string().nullish(), limit: z.number().min(-1).max(100).nullish(), keyword: z.string().nullish(), states: z.array(z.number()).nullish(), termIds: z.array(z.string()).nullish(), termIdFilters: z.map(z.string(), z.array(z.string())).nullish(), selectedIds: z.array(z.string()).nullish(), initialIds: z.array(z.string()).nullish(), excludeIds: z.array(z.string()).nullish(), createStartDate: z.date().nullish(), createEndDate: z.date().nullish(), deptId: z.string().nullish(), });