import { Controller, Get } from '@nestjs/common';
import { ClsService } from 'nestjs-cls';
import type { PingResponse } from '@sar/api-interface';
import type { WorkspaceClsStore } from '../workspace/workspace.types';
import { Public } from '../auth/public.decorator';

// Endpoint de verificação de fundação:
//   - confirma que CLS está populando workspaceId + requestId;
//   - serve como alvo do healthcheck do docker compose / smoke test;
//   - usado pela Web (Frente B) para validar conectividade real.
// Contrato: @sar/api-interface · PingResponseSchema (zod).

@Public()
@Controller({ path: 'ping' })
export class PingController {
  constructor(private readonly cls: ClsService<WorkspaceClsStore>) {}

  @Get()
  ping(): PingResponse {
    return {
      status: 'ok',
      service: 'sar-api',
      version: process.env['npm_package_version'] ?? '0.1.0',
      idEmpresa: this.cls.get('idEmpresa'),
      requestId: this.cls.get('requestId'),
      uptimeSeconds: Math.round(process.uptime()),
      now: new Date().toISOString(),
    };
  }
}
