package com.pandoli365.bibimbap.config;

import com.pandoli365.bibimbap.badge.BadgeKeys;
import com.pandoli365.bibimbap.mapper.BadgesMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Component
public class BadgeCatalogSeeder implements ApplicationRunner {

    private static final Logger log = LoggerFactory.getLogger(BadgeCatalogSeeder.class);

    private final BadgesMapper badgesMapper;

    public BadgeCatalogSeeder(BadgesMapper badgesMapper) {
        this.badgesMapper = badgesMapper;
    }

    @Override
    public void run(ApplicationArguments args) {
        // 시드(멱등): enum 전체 순회 — insertIgnore 로 신규 키만 삽입, 기존 행 미덮어쓰기
        for (BadgeKeys badge : BadgeKeys.values()) {
            badgesMapper.insertIgnore(badge.name(), badge.displayName(), descriptionFor(badge), badge.name());
        }

        log.info("[BADGE] 배지 카탈로그 시드 완료: {} 종", BadgeKeys.values().length);
    }

    private String descriptionFor(BadgeKeys badge) {
        return switch (badge) {
            case REVIEWER -> "리뷰 " + badge.threshold() + "건 이상 작성 시 자동 부여";
            case TECHNICIAN -> "게임 " + badge.threshold() + "개 이상 업로드 시 자동 부여";
        };
    }
}
