package space.nstart.pcp_tgu_service.repository

import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.jpa.repository.Modifying
import org.springframework.data.jpa.repository.Query
import org.springframework.data.repository.query.Param
import space.nstart.pcp_tgu_service.entity.ProcessedPlanDecisionEventEntity
import java.time.LocalDateTime
import java.util.UUID

/** Dedup-хранилище обработанных Kafka decision events. */
interface ProcessedPlanDecisionEventRepository : JpaRepository<ProcessedPlanDecisionEventEntity, UUID> {
    /** Атомарно вставляет eventId, игнорируя повторную доставку того же Kafka event. */
    @Modifying
    @Query(
        value = """
            INSERT INTO processed_plan_decision_event(event_id, received_at)
            VALUES (:eventId, :receivedAt)
            ON CONFLICT (event_id) DO NOTHING
        """,
        nativeQuery = true
    )
    fun insertIfAbsent(
        @Param("eventId") eventId: UUID,
        @Param("receivedAt") receivedAt: LocalDateTime
    ): Int
}
