From 00993c67da3ab7698b1a7af3d181cf02e0c43388 Mon Sep 17 00:00:00 2001 From: Bas van Rossem Date: Wed, 17 Jun 2026 22:28:02 +0200 Subject: [PATCH] feat(shared): manual-session create/update contracts Add CreateManualSessionInput and AdminUpdateSessionInput zod schemas plus inferred types. packages/shared has no test runner, so these are exercised via Task 2's API tests rather than a standalone parse test. --- packages/shared/src/index.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 5ad66c0..e6e4fc6 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -86,3 +86,27 @@ export const AdminUser = z.object({ created_at: z.string(), }); export type AdminUser = z.infer; + +export const CreateManualSessionInput = z.object({ + user_id: z.string(), + activity_id: z.number().int(), + insole_type: InsoleType, + pair_count: z.number().int().min(1), + start_time: z.string(), + end_time: z.string(), + paused_seconds: z.number().int().min(0).default(0), + notes: z.string().nullable().optional(), +}); +export type CreateManualSessionInput = z.infer; + +export const AdminUpdateSessionInput = z.object({ + activity_id: z.number().int(), + insole_type: InsoleType.nullable(), + pair_count: z.number().int().min(1), + start_time: z.string(), + end_time: z.string().nullable(), + paused_seconds: z.number().int().min(0), + notes: z.string().nullable(), + status: SessionStatus, +}); +export type AdminUpdateSessionInput = z.infer;