37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
|
|
/**
|
||
|
|
* ID Mapping Domain - Schemas
|
||
|
|
*/
|
||
|
|
|
||
|
|
import { z } from "zod";
|
||
|
|
import type {
|
||
|
|
CreateMappingRequest,
|
||
|
|
UpdateMappingRequest,
|
||
|
|
UserIdMapping,
|
||
|
|
} from "./contract";
|
||
|
|
|
||
|
|
export const createMappingRequestSchema: z.ZodType<CreateMappingRequest> = z.object({
|
||
|
|
userId: z.string().uuid(),
|
||
|
|
whmcsClientId: z.number().int().positive(),
|
||
|
|
sfAccountId: z
|
||
|
|
.string()
|
||
|
|
.min(1, "Salesforce account ID must be at least 1 character")
|
||
|
|
.optional(),
|
||
|
|
});
|
||
|
|
|
||
|
|
export const updateMappingRequestSchema: z.ZodType<UpdateMappingRequest> = z.object({
|
||
|
|
whmcsClientId: z.number().int().positive().optional(),
|
||
|
|
sfAccountId: z
|
||
|
|
.string()
|
||
|
|
.min(1, "Salesforce account ID must be at least 1 character")
|
||
|
|
.optional(),
|
||
|
|
});
|
||
|
|
|
||
|
|
export const userIdMappingSchema: z.ZodType<UserIdMapping> = z.object({
|
||
|
|
id: z.string().uuid(),
|
||
|
|
userId: z.string().uuid(),
|
||
|
|
whmcsClientId: z.number().int().positive(),
|
||
|
|
sfAccountId: z.string().nullable().optional(),
|
||
|
|
createdAt: z.union([z.string(), z.date()]),
|
||
|
|
updatedAt: z.union([z.string(), z.date()]),
|
||
|
|
});
|