package com.arms.api.aichat.init;

import com.arms.api.aichat.domain.RecommendedCard;
import com.arms.api.util.redisrepo.RedisFramework;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;
import java.util.UUID;

import static com.arms.api.aichat.constant.AiChatRedisKeys.RECOMMENDED_CARDS;

@Component
@RequiredArgsConstructor
@Slf4j
public class RecommendedCardInitializer implements ApplicationRunner {

    private final RedisFramework redisFramework;

    private static final List<String> DEFAULT_CARDS = List.of(
            "Time을 분석해줘",
            "Scope을 분석해줘",
            "Resource를 분석해줘"
    );

    @Override
    public void run(ApplicationArguments args) {
        Map<Object, Object> existing = redisFramework.hash().getAll(RECOMMENDED_CARDS);
        if (existing != null && existing.size() == DEFAULT_CARDS.size()) {
            log.info("Recommended cards already initialized. Skipping.");
            return;
        }

        // 기존 데이터 삭제 후 재설정
        if (existing != null && !existing.isEmpty()) {
            redisFramework.delete(List.of(RECOMMENDED_CARDS));
        }

        for (int i = 0; i < DEFAULT_CARDS.size(); i++) {
            RecommendedCard card = RecommendedCard.builder()
                    .cardId(UUID.randomUUID().toString())
                    .question(DEFAULT_CARDS.get(i))
                    .sortOrder(i + 1)
                    .build();
            redisFramework.hash().set(RECOMMENDED_CARDS, card.getCardId(), card);
        }

        log.info("Recommended cards initialized. count: {}", DEFAULT_CARDS.size());
    }

}
