package com.arms.api.evaluation.controller;

import com.arms.api.evaluation.model.dto.EvaluationRequestDTO;
import com.arms.api.evaluation.model.vo.EvaluationResultVO;
import com.arms.api.evaluation.model.vo.FullEvaluationResultVO;
import com.arms.api.evaluation.service.EvaluationService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Mono;

@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/evaluation")
public class EvaluationController {

    private final EvaluationService evaluationService;

    @PostMapping("/relevancy")
    public Mono<EvaluationResultVO> evaluateRelevancy(
            @RequestBody EvaluationRequestDTO request) {
        return evaluationService.evaluateRelevancy(request);
    }

    @PostMapping("/fact-checking")
    public Mono<EvaluationResultVO> evaluateFactChecking(
            @RequestBody EvaluationRequestDTO request) {
        return evaluationService.evaluateFactChecking(request);
    }

    @PostMapping("/all")
    public Mono<FullEvaluationResultVO> evaluateAll(
            @RequestBody EvaluationRequestDTO request) {
        return evaluationService.evaluateAll(request);
    }

    @PostMapping("/all-with-context")
    public Mono<FullEvaluationResultVO> evaluateAllWithContext(
            @RequestBody EvaluationRequestDTO request) {
        return evaluationService.evaluateAllWithContext(request);
    }
}
