diff --git a/opp/core/src/main/java/Repository.java b/opp/core/src/main/java/Repository.java index 97e8e39cb77d40e7af3c5a09a47affcce2d462da..054da27708b5e7e05f8e9330f426b8fc31730255 100644 --- a/opp/core/src/main/java/Repository.java +++ b/opp/core/src/main/java/Repository.java @@ -90,11 +90,13 @@ public interface Repository { OperationTeam deleteOperationTeam(Id<OperationTeam> id) throws SQLException; - Id<String> opStaffsInOperationTeamsId(); + //Id<String> opStaffsInOperationTeamsId(); - Optional<Map<OperationTeam, OPStaff>> findOPStaffsInOperationTeam(Id<String> id); + //Optional<Map<OperationTeam, OPStaff>> findOPStaffsInOperationTeam(Id<String> id); Boolean assignOPStaffToOperationTeam(Id<OperationTeam> operationTeamId, Id<OPStaff> opStaffId); + Boolean findOperationTeamOPStaffImpl(Id<OperationTeam> operationTeamId, Id<OPStaff> opStaffId); + diff --git a/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java b/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java index acacacb7fd50c0f37da66516a35141562a2a3f73..daf3079cf5d231b63bcba00f5964afb68b832a4a 100644 --- a/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java +++ b/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java @@ -88,12 +88,12 @@ class JDBCRepository implements Repository */ private static final String CREATE_OP_STAFF_IN_OPERATION_TEAM_TABLE = """ CREATE TABLE IF NOT EXISTS opStaffsInOperationTeams( - id VARCHAR(50) PRIMARY KEY, operationTeamId VARCHAR(50), opStaffId VARCHAR(50), lastUpdate TIMESTAMP NOT NULL, FOREIGN KEY (operationTeamId) REFERENCES operationTeams(id), - FOREIGN KEY (opStaffId) REFERENCES opStaffs(id) + FOREIGN KEY (opStaffId) REFERENCES opStaffs(id), + PRIMARY KEY (operationTeamId, opStaffId) ); """; @@ -245,9 +245,8 @@ class JDBCRepository implements Repository private String insertSQL(Id<OperationTeam> operationTeamId, Id<OPStaff> opStaffId) { return "INSERT INTO opStaffsInOperationTeams(" + - "id,operationTeamId,opStaffId,lastUpdate" + + "operationTeamId,opStaffId,lastUpdate" + ") VALUES (" + - sqlValue(opStaffsInOperationTeamsId()) + "," + sqlValue(operationTeamId.value()) + "," + sqlValue(opStaffId.value()) + "," + sqlValue(Instant.now()) + @@ -659,13 +658,15 @@ class JDBCRepository implements Repository return null; } + /* @Override public Id<String> opStaffsInOperationTeamsId() { var id = new Id<String>(randomUUID().toString()); return findOPStaffsInOperationTeam(id).isEmpty() ? id : opStaffsInOperationTeamsId(); } - +*/ + /* @Override public Optional<Map<OperationTeam, OPStaff>> findOPStaffsInOperationTeam(Id<String> id) { try ( @@ -698,7 +699,7 @@ class JDBCRepository implements Repository } catch (SQLException e){ throw new RuntimeException(e); } - } + }*/ @Override public Boolean assignOPStaffToOperationTeam(Id<OperationTeam> operationTeamId, Id<OPStaff> opStaffId) { @@ -799,6 +800,32 @@ class JDBCRepository implements Repository } } + + public Boolean findOperationTeamOPStaffImpl(Id<OperationTeam> operationTeamId, Id<OPStaff> opStaffId){ + + try( + var result = + conn.createStatement() + .executeQuery("SELECT DISTINCT opStaffs.id, opStaffs.role, opStaffs.specialty, opStaffs.lastupdate " + + "FROM opStaffs " + + "JOIN opStaffsInOperationTeams " + + "ON (opStaffs.id = opStaffsInOperationTeams.opstaffid) " + + "WHERE opStaffsInOperationTeams.operationteamid = '"+operationTeamId.value()+"'" + + "AND opStaffsInOperationTeams.opStaffId = '"+opStaffId.value()+"';"); + //SELECT DISTINCT opStaffs.id, opStaffs.role, opStaffs.specialty, opStaffs.lastupdate FROM opStaffs JOIN opStaffsInOperationTeams ON (opStaffs.id = '4444') WHERE opStaffsInOperationTeams.operationteamid = '31';S + ) { + //SELECT DISTINCT opstaff.id, opstaff.role, opstaff.specialty, opstaff.lastupdate, teammember.operationteamid FROM opstaff JOIN teammember ON (opstaff.id = teammember.opstaffid); + //SELECT DISTINCT opstaff.id, opstaff.role, opstaff.specialty, opstaff.lastupdate, teammember.operationteamid FROM opstaff JOIN teammember ON (opstaff.id = teammember.opstaffid) WHERE teammember.operationteamid= '31313131'; + + while (result.next()) { + return true; + } + return false; + }catch(SQLException e){ + throw new RuntimeException(e); + } + } + //endregion diff --git a/opp/jdbc-repo-impl/src/test/java/Tests.java b/opp/jdbc-repo-impl/src/test/java/Tests.java index 8d9464a4aef0a6066e42e7352a2fa57851cc6f3c..4fd5d284c6f08aa7e0a79d64048dfed3ddb782e2 100644 --- a/opp/jdbc-repo-impl/src/test/java/Tests.java +++ b/opp/jdbc-repo-impl/src/test/java/Tests.java @@ -267,6 +267,28 @@ public final class Tests assertTrue(result); } + @Test + public void testAssignStaffToOperationTeamProcess() throws Exception { + + OPStaff.CreateOPStaff createOPStaffCommand = new OPStaff.CreateOPStaff( + Role.SURGEON, + Specialty.Gastroenterology + ); + + OPStaff createdOPStaff = opStaffService.process(createOPStaffCommand); + + OperationTeam.AssignStaff operationTeamCommand = new OperationTeam.AssignStaff( + testOperationTeam.id(), + createdOPStaff + ); + + OperationTeam returnedOperationTeam = operationTeamService.process(operationTeamCommand); + + Boolean result = repo.findOperationTeamOPStaffImpl(returnedOperationTeam.id(),createdOPStaff.id()); + + assertTrue(result); + } + //@Test