-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUserRepository.java
More file actions
73 lines (62 loc) · 2.43 KB
/
Copy pathUserRepository.java
File metadata and controls
73 lines (62 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package ch.fhnw.timerecordingbackend.repository;
import ch.fhnw.timerecordingbackend.model.User;
import ch.fhnw.timerecordingbackend.model.enums.UserStatus;
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;
import java.util.List;
import java.util.Optional;
/**
* Repository für User Entitäten und CRUD Operationen
* @author PD
* Code von anderen Teammitgliedern oder Quellen wird durch einzelne Kommentare deklariert
* @version 1.0
*/
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
/**
* User nach E-Mail finden
* @param email sucht nach E-Mail Adresse
* @return Optional mit User, wenn gefunden, sonst Optional.empty()
*/
Optional<User> findByEmail(String email);
/**
* Prüft ob User mit E-Mail vorhanden ist
* @param email zu prüfende E-Mail Adresse
* @return true, wenn E-Mail existiert, sonst false
*/
boolean existsByEmail(String email);
/**
* Gibt alle aktiven User zurück
* @return Liste mit aktiven Usern
*/
List<User> findByActiveTrue();
/**
* Nutzer mit Status finden
* @param status
* @return Liste mit Nutzern mit gewünschten Status
*/
List<User> findByStatus(UserStatus status);
/**
* Nutzer mit bestimmten Rollen finden
* Query Many To Many Abfrage mit Hilfe von Quelle: chatgpt.com
* @param roleName Name der Rolle
* @return Liste mit Nutzern mit gewünschten Rollen
*/
@Query("SELECT u FROM User u JOIN u.roles r WHERE r.name = :roleName")
List<User> findByRoleName(@Param("roleName") String roleName);
/**
* Sucht User mit Suchbegriff in Name und E-Mail nach
* @param searchTerm Suchbegriff
* @return Liste mit gefundenen Usern
*/
@Query("SELECT u FROM User u WHERE LOWER(u.firstName) LIKE LOWER(CONCAT('%', :searchTerm, '%')) OR LOWER(u.lastName) LIKE LOWER(CONCAT('%', :searchTerm, '%')) OR LOWER(u.email) LIKE LOWER(CONCAT('%', :searchTerm, '%'))")
List<User> searchUsers(@Param("searchTerm") String searchTerm);
/**
* Findet alle Benutzer, die dem angegebenen Manager direkt unterstellt sind.
* @param manager Der Manager-Benutzer.
* @return Eine Liste der direkt unterstellten Benutzer.
*/
List<User> findByManager(User manager);
}