package samuelb.capripol.Repositories;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import samuelb.capripol.GroupRole;

import java.util.List;

@Repository
public interface GroupRoleRepository extends JpaRepository<GroupRole, Long> {

//    @Query(value="SELECT groupRole FROM GroupRole groupRole " +
//            "JOIN groupRole.groupUserRoles groupUserRoles " +
//            "JOIN groupUserRoles.group groups "+
//            "JOIN groups.groupMembers groupMembers "+
//            "WHERE groupMembers.userID =:userID "+
//            "AND groups.groupID =:groupID")
//    List<GroupRole> findUsersGroupRoles(@Param("userID") Long userID, @Param("groupID") Long groupID);

    @Query(value = "SELECT groupRole FROM GroupRole groupRole " +
            "JOIN groupRole.groupUserRoles groupUserRoles " +
            "JOIN groupUserRoles.group myGroup "+
            "JOIN myGroup.groupMembers groupMembers "+
            "WHERE groupMembers.userID =:userID " +
            "AND myGroup.groupID =:groupID")
    List<GroupRole> findByUserID(@Param("userID") Long userID, @Param("groupID") Long groupID);


//    List<GroupRole> findByUserGroup

    GroupRole findByRoleName(@Param("roleName") String roleName);
}
