UNPKG

trainingpeaks-sdk

Version:
51 lines (50 loc) 1.95 kB
import { z } from 'zod'; export const WorkoutResponseSchema = z.object({ workout: z.object({ id: z.string().min(1), name: z.string().min(1).max(200), date: z.string(), duration: z.number().nonnegative().finite(), type: z.string().min(1), description: z.string().optional(), }), }); export const WorkoutsListResponseSchema = z.object({ total: z.number().nonnegative().int(), workouts: z.array(WorkoutResponseSchema), }); export const WorkoutStatsSchema = z.object({ totalWorkouts: z.number().nonnegative().int(), totalDistance: z.number().nonnegative().finite(), totalDuration: z.number().nonnegative().finite(), totalCalories: z.number().nonnegative().finite(), averageDistance: z.number().nonnegative().finite(), averageDuration: z.number().nonnegative().finite(), favoriteType: z.string().min(1), }); export const CreateWorkoutRequestSchema = z.object({ name: z.string().min(1).max(200), date: z.string(), duration: z.number().nonnegative().finite(), type: z.string().min(1), description: z.string().optional(), distance: z.number().nonnegative().finite().optional(), calories: z.number().nonnegative().finite().optional(), }); export const UpdateWorkoutRequestSchema = z.object({ id: z.string().min(1), name: z.string().min(1).max(200).optional(), date: z.string().optional(), duration: z.number().nonnegative().finite().optional(), type: z.string().min(1).optional(), description: z.string().optional(), distance: z.number().nonnegative().finite().optional(), calories: z.number().nonnegative().finite().optional(), }); export const WorkoutFiltersSchema = z.object({ dateFrom: z.string().optional(), dateTo: z.string().optional(), type: z.string().min(1).optional(), limit: z.number().positive().int().optional(), offset: z.number().nonnegative().int().optional(), });