package de.oaa.xxx.gruppe.repository;

import de.oaa.xxx.gruppe.entity.GruppenbeitragEntity;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
import java.util.UUID;

public interface GruppenbeitragRepository extends JpaRepository<GruppenbeitragEntity, UUID> {

    Slice<GruppenbeitragEntity> findByGruppeIdOrderByCreatedAtDesc(UUID gruppeId, Pageable pageable);

    List<GruppenbeitragEntity> findByGruppeIdOrderByCreatedAtDesc(UUID gruppeId);

    Optional<GruppenbeitragEntity> findFirstByGruppeIdOrderByCreatedAtDesc(UUID gruppeId);

    List<GruppenbeitragEntity> findByGruppeIdInAndCreatedAtAfterOrderByCreatedAtDesc(List<UUID> gruppeIds, LocalDateTime since);

    @Transactional
    void deleteByGruppeId(UUID gruppeId);

    @Transactional
    void deleteByAuthorId(UUID authorId);
}
