package space.nstart.pcp.routepassportconsumer.config

import jakarta.validation.constraints.NotBlank
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.validation.annotation.Validated

/**
 * Типизированные Kafka topic-настройки сервиса.
 *
 * Все значения приходят из spring-cloud-config-server и валидируются при старте,
 * чтобы сервис не запускался без обязательных имен входного и выходных topic'ов.
 */
@Validated
@ConfigurationProperties(prefix = "app.kafka.topics")
data class KafkaTopicsProperties(

    /** Topic, из которого сервис читает входящие паспорта маршрутов. */
    @field:NotBlank
    val input: String = "",

    /** DLQ topic для входящих паспортов маршрутов, которые не удалось обработать. */
    @field:NotBlank
    val inputDlq: String = "",

    /** Topic, в который сервис будет публиковать сообщение об обработанном маршруте. */
    @field:NotBlank
    val processedRoute: String = "",

    /** Topic, в который сервис будет публиковать сообщение геопривязки маршрута. */
    @field:NotBlank
    val routeGeoreference: String = "",
)
