import { oc } from '@orpc/contract' import { z } from 'zod' import { BATTERY_LIST_SORT, BATTERY_LIST_SORT_VALUES, batteriesResponseSchema, dashboardSnapshotSchema, POWER_STATUS, } from '@/domain/battery' export const dashboard = oc.input(z.void()).output(dashboardSnapshotSchema) const batteryListInputSchema = z.object({ pageSize: z.number().int().min(1).max(100).default(50), cursor: z.string().min(1).max(1024).optional(), search: z.preprocess( (value) => (typeof value === 'string' ? value.trim() || undefined : value), z.string().min(1).max(100).optional(), ), lowPower: z.boolean().optional(), powerStatus: z .union([z.literal(POWER_STATUS.NOT_CHARGING), z.literal(POWER_STATUS.CHARGING), z.literal(POWER_STATUS.FULL)]) .optional(), sort: z.enum(BATTERY_LIST_SORT_VALUES).default(BATTERY_LIST_SORT.CREATED_AT_DESC), }) export const batteries = oc.input(batteryListInputSchema).output(batteriesResponseSchema) export const history = oc .input( z.object({ mac: z.string().min(1), }), ) .output(batteriesResponseSchema)