package samuelb.capripol.Repositories;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.jpa.repository.query.Procedure;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import samuelb.capripol.User;

import java.math.BigDecimal;
import java.util.List;


@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    User findByEmail(String email);
    User findByUserName(String userName);

    @Procedure(name="userRating")
    BigDecimal getUserRating(@Param("baseRating") BigDecimal baseRating, @Param("userID") Long userID, @Param("focusID") Long focusID);

    @Query(value = "SELECT DISTINCT user FROM User user " +
            "JOIN user.usersGroups groups " +
            "JOIN groups.framework framework " +
            "JOIN framework.frameworkFoci foci " +
            "WHERE foci.focusID =:focusID")
    List<User> findByFocusID(@Param("focusID") Long focusID);
}