import { NextRequest } from "next/server"; import { zMeasurementInputSchema } from "@lifetracker/shared/types/metrics"; import { buildHandler } from "../utils/handler"; import spacetime from "spacetime"; export const POST = (req: NextRequest) => buildHandler({ req, bodySchema: zMeasurementInputSchema, handler: async ({ api, body }) => { const datetime = spacetime( body?.dateTimeQuery || new Date(), body?.timezone || "Etc/UTC" ).goto("Etc/UTC"); // const dayId = (await api.days.get({ // dateQuery: datetime.format("iso-short") // })).id; const hour = await api.hours.get({ dateQuery: spacetime(datetime).startOf("hour").format("iso"), }); const obj = { metricName: body!.metricName, hourId: hour.id!, dayId: hour.dayId }; const measurement = body?.value ? await api.measurements.setValue({ ...obj, value: body.value!, }) : await api.measurements.incrementCount(obj); return { status: 201, resp: measurement }; }, });