package de.oaa.xxx.games.chastity.unlock;

import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;
import java.util.UUID;

public interface UnlockCodeHistoryRepository extends JpaRepository<UnlockCodeHistoryEntity, UUID> {

    List<UnlockCodeHistoryEntity> findByUserIdOrderByReceivedAtDesc(UUID userId, Pageable pageable);

    /** Prüft, ob für dieses Lock und diese Quelle bereits der gleiche Code gespeichert ist. */
    boolean existsByLockIdAndSourceAndUnlockCode(UUID lockId, String source, String unlockCode);

    /** Alle Einträge des Users aufsteigend (für Cleanup: älteste löschen). */
    @Query("SELECT e FROM UnlockCodeHistoryEntity e WHERE e.userId = :userId ORDER BY e.receivedAt ASC")
    List<UnlockCodeHistoryEntity> findByUserIdOrderByReceivedAtAsc(@Param("userId") UUID userId);

    long countByUserId(UUID userId);
}
