package com.kt.event.analytics.controller;

import com.kt.event.analytics.config.SampleDataLoader;
import com.kt.event.common.dto.ApiResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 디버그 컨트롤러
 *
 * ⚠️ 개발/테스트 전용
 */
@Tag(name = "Debug", description = "디버그 API (개발/테스트 전용)")
@Slf4j
@RestController
@RequestMapping("/debug")
@RequiredArgsConstructor
public class DebugController {

    private final SampleDataLoader sampleDataLoader;

    /**
     * 샘플 데이터 수동 생성
     */
    @Operation(
        summary = "샘플 데이터 수동 생성",
        description = "SampleDataLoader를 수동으로 실행하여 샘플 데이터를 생성합니다."
    )
    @PostMapping("/reload-sample-data")
    public ResponseEntity<ApiResponse<String>> reloadSampleData() {
        try {
            log.info("🔧 수동으로 샘플 데이터 생성 요청");

            // SampleDataLoader 실행
            sampleDataLoader.run(new ApplicationArguments() {
                @Override
                public String[] getSourceArgs() {
                    return new String[0];
                }

                @Override
                public java.util.Set<String> getOptionNames() {
                    return java.util.Collections.emptySet();
                }

                @Override
                public boolean containsOption(String name) {
                    return false;
                }

                @Override
                public java.util.List<String> getOptionValues(String name) {
                    return null;
                }

                @Override
                public java.util.List<String> getNonOptionArgs() {
                    return java.util.Collections.emptyList();
                }
            });

            return ResponseEntity.ok(ApiResponse.success("샘플 데이터 생성 완료"));
        } catch (Exception e) {
            log.error("❌ 샘플 데이터 생성 실패", e);
            return ResponseEntity.ok(ApiResponse.success("샘플 데이터 생성 실패: " + e.getMessage()));
        }
    }
}
