PMT-4: Mitarbeiter zu einem projekt hinzufügen #14
Loading…
Reference in a new issue
No description provided.
Delete branch "story/PMT-4-mitarbeiter-zu-einem-projekt"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@SZUT-Ole @SZUT-Rajbir kommt mal bitte von !13 her für PMT-4
@ -169,5 +213,4 @@ paths:
schema:
type: string
500:
$ref: "#/components/responses/InternalError"
Newline bitte wieder an das Ende tuhen.
@ -77,6 +86,12 @@ components:
text/plain:
schema:
type: string
NotAcceptable:
Ich habe nochmal nachgeschaut, ein Not Acceptable ist was anderes und hat mit der Browser aushandlung vom Content Format zu tuhen.
wir wollen statdessen einen 422 Unprocessable Content schmeisen (der Schema eintrag exestiert bereits, diesen bitte nicht vergessen zu entfernen)
@ -150,0 +184,4 @@
$ref: "#/components/responses/Unauthorized"
404:
$ref: "#/components/responses/NotFound"
406:
Ich habe nochmal nachgeschaut, ein Not Acceptable ist was anderes und hat mit der Browser aushandlung vom Content Format zu tuhen.
wir wollen statdessen einen 422 Unprocessable Content schmeisen (der Schema eintrag exestiert bereits, den hier verlinkten aber bitte löschen)
@ -96,0 +101,4 @@
public ResponseEntity<Void> addEmployee(Long id, AddEmployeeDTO body) {
Optional<Project> optionalProject = projectRepository.findById(id);
if (optionalProject.isEmpty()) {
du kannst einfach direkt
repository.existsById(id)
nutzen wenn du nichtmer auf as Projekt zugreifen möchtest danach, anosnten bitte direkt nach dem If check aus dem Optional rausziehen in eine neue Variable@ -96,0 +103,4 @@
Optional<Project> optionalProject = projectRepository.findById(id);
if (optionalProject.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
Newline um eine Logische Trennung zu machen
@ -96,0 +115,4 @@
if (allocationRepository.hasOverlappingAllocation(employee.getId(), project.getStart(), project.getPlannedEnd())) {
return new ResponseEntity<>(HttpStatus.CONFLICT);
}
Allocation allocation = new Allocation();
Der Happy Path sollte möglichsts zu letzt kommen, du hast viel zu viel im try catch
@ -96,0 +130,4 @@
}
}
private boolean hasQualification(List<QualificationGetDTO> qualifications, Long neededQualificationId) {
Einmalige methode zum enscheiden von etwas hat hier nix zu suchen, gehört inline
@ -0,0 +7,4 @@
public interface AllocationRepository extends CrudRepository<Allocation, AllocationId> {
@Query("SELECT COUNT(a) > 0 FROM Allocation a " +
Raw SQL, bitte die features von Spring Repositories direkt nutzen, siehe andere Repository Klassen
würde ungefähr so ausehen:
List<Allocation> findAllocationsByEmployeeId(Long employeeId);
ist es eine Vorgab von Heidemann das wir kein raw sql nutzen dürfen ?
Das hier wäre meine Etwas aufgeräumte und optimierte lösung, bitte aber erst raufschauen wenn es garnicht mehr geht, habe ja weiter oben einiges an kommentaren hinerlassen :)
Spoiler
SZUT-Dominik referenced this pull request2024-10-18 21:35:39 +00:00
@SZUT-Dominik hab soweit die Änderungen übernommen, jedoch habe ich beim schreiben von den Test noch Schwierigkeiten. Ich schaue mir das trotzdem noch weiter an, falls ich nicht weiterkomme, werde ich Montag weiter machen.
@ -96,0 +102,4 @@
Optional<Project> optionalProject = projectRepository.findById(id);
if (projectRepository.findById(id).isEmpty()) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
Doppelte Nutzung von
findById
, was einen 2ten Datenbank Query auslöst, hast doch schon den Optional@ -96,0 +116,4 @@
}
boolean hasQualification = employee.getSkillSet()
.stream()
unnötige zwischen Variable, tu es doch direkt in das if
@ -96,0 +128,4 @@
List<Allocation> allocations = allocationRepository.findAllocationsByEmployeeId(body.getEmployeeId());
boolean hasOverlap = allocations.stream()
Direkt in das If tun
Rajbir du must einmal Pullen bevor du was weiter machst, habe einen kleinen Fix für die DB sachen die Ich vorbereitet hatte dazu gepusht.
Die Statische Code Analyse sollte jetzt ohne Probleme durchlaufen, dan musst du nurnoch dein Linting Fixen für die Pipeline
Controller ist soweit fertig. Setze mich jetzt an den Test
0c3784dd72
tob907501d8b
d6e51ffcfe
to5cc1621c02
WIP: story/PMT-4-mitarbeiter-zu-einem-projektto story/PMT-4-mitarbeiter-zu-einem-projektstory/PMT-4-mitarbeiter-zu-einem-projektto PMT-4: Mitarbeiter zu einem projekt hinzufügen5cc1621c02
to8fd25a5bed
8fd25a5bed
to32d895c47e
basst