package com.kt.event.analytics.config;

import org.apache.kafka.clients.admin.NewTopic;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.config.TopicBuilder;

/**
 * Kafka 토픽 자동 생성 설정
 *
 * ⚠️ MVP 전용: 샘플 데이터용 토픽을 생성합니다.
 *             실제 운영 토픽(event.created 등)과 구분하기 위해 "sample." 접두사 사용
 *
 * 서비스 시작 시 필요한 Kafka 토픽을 자동으로 생성합니다.
 */
@Configuration
@ConditionalOnProperty(name = "spring.kafka.enabled", havingValue = "true", matchIfMissing = false)
public class KafkaTopicConfig {

    /**
     * sample.event.created 토픽 (MVP 샘플 데이터용)
     */
    @Bean
    public NewTopic eventCreatedTopic() {
        return TopicBuilder.name("sample.event.created")
            .partitions(3)
            .replicas(1)
            .build();
    }

    /**
     * sample.participant.registered 토픽 (MVP 샘플 데이터용)
     */
    @Bean
    public NewTopic participantRegisteredTopic() {
        return TopicBuilder.name("sample.participant.registered")
            .partitions(3)
            .replicas(1)
            .build();
    }

    /**
     * sample.distribution.completed 토픽 (MVP 샘플 데이터용)
     */
    @Bean
    public NewTopic distributionCompletedTopic() {
        return TopicBuilder.name("sample.distribution.completed")
            .partitions(3)
            .replicas(1)
            .build();
    }
}
