diff --git a/src/validation.ts b/src/validation.ts new file mode 100644 index 0000000..6ae8f08 --- /dev/null +++ b/src/validation.ts @@ -0,0 +1,23 @@ +import { z, ZodSchema } from "zod"; + +export function parseBody(schema: ZodSchema, body: unknown) { + const result = schema.safeParse(body); + if (result.success) return { ok: true as const, data: result.data }; + return { + ok: false as const, + status: 400 as const, + error: { + message: "Validation failed", + issues: result.error.issues.map((i) => ({ + path: i.path.join("."), + message: i.message, + })), + }, + }; +} + +export const paySchema = z.object({ + amount: z.number().positive(), + asset: z.string().min(1), + destination: z.string().min(1), +});