package dev.lions.unionflow.server.repository;

import dev.lions.unionflow.server.entity.MembreSuivi;
import io.quarkus.arc.Unremovable;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.persistence.TypedQuery;

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

@ApplicationScoped
@Unremovable
public class MembreSuiviRepository extends BaseRepository<MembreSuivi> {

    public MembreSuiviRepository() {
        super(MembreSuivi.class);
    }

    public Optional<MembreSuivi> findByFollowerAndSuivi(UUID followerId, UUID suiviId) {
        TypedQuery<MembreSuivi> q = entityManager.createQuery(
            "SELECT s FROM MembreSuivi s WHERE s.followerUtilisateurId = :follower AND s.suiviUtilisateurId = :suivi",
            MembreSuivi.class);
        q.setParameter("follower", followerId);
        q.setParameter("suivi", suiviId);
        return q.getResultList().stream().findFirst();
    }

    public List<MembreSuivi> findByFollower(UUID followerId) {
        TypedQuery<MembreSuivi> q = entityManager.createQuery(
            "SELECT s FROM MembreSuivi s WHERE s.followerUtilisateurId = :follower",
            MembreSuivi.class);
        q.setParameter("follower", followerId);
        return q.getResultList();
    }
}
