package com.plannaplan.repositories; import java.util.List; import java.util.Optional; import com.plannaplan.entities.User; import com.plannaplan.types.UserRoles; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; /** * UserRepository.getByAuthority: Return list of: SELECT * FROM User WHERE email * = i. * * Where i, ?1 are equale to variables. * * UserRepository.getByToken: Return list of: SELECT * FROM User WHERE token = * i. * * Where i, ?1 are equale to variables. * * UserRepository.searchForUsers: Return list of: SELECT * FROM User WHERE (name * LIKE %?1% OR surname LIKE %?1%). * * Where i, ?1 are equale to variables. * * UserRepository.searchForUsers with role: Return list of: SELECT * FROM User * WHERE (name LIKE %?1% OR surname LIKE %?1%) AND role=?2"). * * Where i, ?1 are equale to variables. */ @Repository public interface UserRepository extends JpaRepository { /** * return user by given authority * * @param authority user usosId or email * @return optional with user if found */ @Query("FROM User WHERE email = ?1 OR usosId = ?1") Optional getByAuthority(@Param("authority") String authority); @Query("FROM User WHERE email = ?1") Optional getByEmail(@Param("authority") String authority); @Query("FROM User WHERE refreshToken = ?1") Optional getByRefreshToken(@Param("refreshToken") String refreshToken); @Query("FROM User WHERE token = ?1") Optional getByToken(@Param("token") String token); @Query("FROM User WHERE (name LIKE %?1% OR surname LIKE %?1%)") List searchForUsers(@Param("query") String query); /** * search for user with given query * * @param query string that will be matched to users name and surname * @param role limits results by role * @return list opf results */ @Query("FROM User WHERE (name LIKE %?1% OR surname LIKE %?1%) AND role=?2") List searchForUsers(@Param("query") String query, @Param("role") UserRoles role); @Query("FROM User WHERE role=?1") List getAllByRole(@Param("role") UserRoles role); @Query("FROM User WHERE usosId = ?1") Optional getByUsosId(@Param("usosId") String usosId); }