package de.oaa.xxx.session.entity;

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

import de.oaa.xxx.framework.AbstractDAO;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;

public class AktiveSperreDAO extends AbstractDAO<AktiveSperreEntity>{

	public AktiveSperreDAO(EntityManager entityManager) {
		super(AktiveSperreEntity.class, entityManager);
	}
	
	public List<AktiveSperreEntity> findAbgelaufene(UUID sessionId) {
		TypedQuery<AktiveSperreEntity> query = getEntityManager().createQuery("""
				select a from AktiveSperreEntity a join a.session s 
					where a.endzeit < :now
					and s.sessionId = :sessionId
				""", AktiveSperreEntity.class);
		query.setParameter("now", LocalDateTime.now());
		query.setParameter("sessionId", sessionId);
		return query.getResultList();
	}
	
	public List<AktiveSperreEntity> findAktiveLocks(UUID spielerId) {
		TypedQuery<AktiveSperreEntity> query = getEntityManager().createQuery("""
				select a from AktiveSperreEntity a join a.mitspieler m
					where m.mitspielerId = :mitspielerId
				""", AktiveSperreEntity.class);
		query.setParameter("mitspielerId", spielerId);
		return query.getResultList();
	}
}
