package ee.esutoniagodesu.repository.domain.ac; import ee.esutoniagodesu.domain.ac.table.ExternalProvider; import ee.esutoniagodesu.domain.ac.table.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; /** * Spring Data JPA repository for the User entity. */ public interface UserRepository extends JpaRepository<User, Integer> { Optional<User> findOneByActivationKey(String activationKey); List<User> findAllByActivatedIsFalseAndCreatedDateBefore(ZonedDateTime createdDate); @Query("select u from User u left join u.accountForm f where f.resetKey = ?1") Optional<User> findOneByResetKey(String resetKey); @Query("select u from User u where lower(u.email) = lower(?1)") Optional<User> findOneByEmail(String email); @Query("select u from User u where lower(u.email) = lower(?1) and u.uuid <> ?2") Optional<User> findOneByEmailNotThisUuid(String email, String uuid); @Query("select u from User u where u.uuid = ?1") Optional<User> findOneByUuid(String uuid); @Query("select u from User u left join u.accountForm f where lower(f.login) = lower(?1)") Optional<User> findOneByLogin(String login); @Override void delete(User t); @Query("select u from User u inner join u.accountExternals ea where ea.provider = ?1 and ea.identifier = ?2") Optional<User> findOneByExternalAccount(ExternalProvider provider, String identifier); }