import { AlertSignalService } from '@api/modules/alert/alert-signal.service';
import { AppModule } from '@api/app.module';
import { AnalyzeService } from '@api/modules/analyze/analyze.service';
import { ClientAnalyzeService } from '@api/modules/client/analyze/client-analyze.service';
import { NestFactory } from '@nestjs/core';
import { Logger } from 'nestjs-pino';

/**
 * 심평원 분석결과정보 데이터 삭제
 * 동작주기 : 확인필요
 * 분석결과정보의 생성일이 30일이 지난 경우 분석결과정보 데이터를 삭제합니다.
 *
 * 해당 로직은 AWS EventBridge에서 실행되도록 설정되어 있습니다.
 */
(async () => {
  const app = await NestFactory.createApplicationContext(AppModule, {
    bufferLogs: true,
  });
  app.useLogger(app.get(Logger));
  const analyzeService = app.get(AnalyzeService);
  const clientAnalyzeService = app.get(ClientAnalyzeService);

  await analyzeService.deleteAnalyze();
  await clientAnalyzeService.deleteAnalyze();
  await analyzeService.deleteB2cAnalyze();

  //* 하트비트(M2 §D4) — 성공 종료 직전에만 남긴다. 중도 throw·비정상 종료는
  //*  자동으로 '하트비트 없음' 이 되어 A3 가 잡는다. 실패가 본 작업을 죽이면 안 된다(UI17).
  await app
    .get(AlertSignalService)
    .markSchedule('delete-analysis')
    .catch(() => {});

  process.exit(0);
})();
