import { Router } from "express";

import { asyncHandler } from "../../lib/async-handler.js";
import { validate } from "../../middleware/validate.js";
import { ingestTelemetrySchema } from "./telemetry.schemas.js";
import type { TelemetryService } from "./telemetry.service.js";

export const createTelemetryRouter = (telemetryService: TelemetryService) => {
  const telemetryRouter = Router();

  telemetryRouter.post(
    "/",
    validate(ingestTelemetrySchema),
    asyncHandler(async (request, response) => {
      const result = await telemetryService.ingestTelemetry({
        ...request.body,
        serverTime: new Date().toISOString(),
      });
      response.status(202).json(result);
    }),
  );

  return telemetryRouter;
};
