package org.datasurvey.repository; import java.time.Instant; import java.util.List; import java.util.Optional; import org.datasurvey.domain.User; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; /** * Spring Data JPA repository for the {@link User} entity. */ @Repository public interface UserRepository extends JpaRepository { String USERS_BY_LOGIN_CACHE = "usersByLogin"; String USERS_BY_EMAIL_CACHE = "usersByEmail"; Optional findOneByActivationKey(String activationKey); List findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(Instant dateTime); Optional findOneByResetKey(String resetKey); Optional findOneByEmailIgnoreCase(String email); Optional findOneByLogin(String login); @EntityGraph(attributePaths = "authorities") @Cacheable(cacheNames = USERS_BY_LOGIN_CACHE) Optional findOneWithAuthoritiesByLogin(String login); @EntityGraph(attributePaths = "authorities") @Cacheable(cacheNames = USERS_BY_EMAIL_CACHE) Optional findOneWithAuthoritiesByEmailIgnoreCase(String email); Page findAllByIdNotNullAndActivatedIsTrue(Pageable pageable); }