package space.nstart.pcp_tgu_service.service

import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import space.nstart.pcp_tgu_service.repository.AcceptedPlanSlotsUpdateJobRepository
import java.time.LocalDateTime
import java.util.UUID
import space.nstart.pcp.pcp_types_lib.utils.UtcDateTimes

/**
 * Создаёт persisted job обновления слотов для accepted plan.
 */
@Service
class AcceptedPlanSlotsUpdateJobService(
    private val acceptedPlanSlotsUpdateJobRepository: AcceptedPlanSlotsUpdateJobRepository
) {
    /** Idempotent enqueue: один planId получает максимум одну job. */
    @Transactional
    fun enqueue(planId: UUID) {
        acceptedPlanSlotsUpdateJobRepository.insertPendingIfAbsent(planId, UtcDateTimes.now())
    }
}
