Commit 37c7606b authored by Luis Felipe Copetti Rossi's avatar Luis Felipe Copetti Rossi
Browse files

fazendo a query da incopativel

parent f58dba62
Pipeline #11230 failed with stage
in 1 minute and 45 seconds
Showing with 28 additions and 41 deletions
+28 -41
......@@ -53,18 +53,21 @@ public class MedicineController {
@PreAuthorize("hasRole('PATIENT') or hasRole('DOCTOR')")
public ResponseEntity<?> findAllIncompatibility(@PathVariable int id) {
Optional<List<MedicineIncResponse>> incompatibilities = medicineService.findAllIncompatibility(id);
if (incompatibilities.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}else{
return ResponseEntity.ok(incompatibilities);
if (incompatibilities.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
} else {
return ResponseEntity.ok(incompatibilities);
}
}
@PostMapping("/incompatibility/test/{id}")
@PostMapping("/{id}/incompatibility")
@PreAuthorize("hasRole('PATIENT') or hasRole('DOCTOR')")
public ResponseEntity<List<MedicineIncResponse>> findIncompatibility(@PathVariable int id, @RequestBody Map<String, List<Integer>> body) {
List<Integer> listIdInc = body.get("idInc");
Optional<List<MedicineIncResponse>> incompatibilities = medicineService.findIncompatibility(id, listIdInc);
return incompatibilities.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build());
public ResponseEntity<?> listIncompatibility(@PathVariable int id, @RequestBody List<Integer> incompatibilities) {
List<Map<String, Integer>> list = new ArrayList<>();
for (Integer incompatibility : incompatibilities) {
list.add(Map.of("id", id, "incompatibility", incompatibility));
}
medicineService.listIncompatibility(list);
return ResponseEntity.ok().build();
}
}
\ No newline at end of file
package br.com.amparo.backend.dto.medicine;
public record MedicineIncResponse(int idMedicine, idMedicineInc, String incompatibility) {
public MedicineIncResponse {
this.idMedicine = idMedicine;
this.idMedicineInc = idMedicineInc;
this.incompatibility = incompatibility;
}
public record MedicineIncResponse(int id, String severity, String incompatibility) {
}
......@@ -97,25 +97,19 @@ public class MedicineRepository {
}
}
public Optional<List<MedicineIncResponse>> findIncompatibility(int id, List<Integer> idInc) {
List<MedicineIncResponse> result = new ArrayList<>();
public Optional<List<MedicineIncResponse>> listIncompatibility(int id) {
try {
StringJoiner joiner = new StringJoiner(",", "(", ")");
for (int i = 0; i < idInc.size(); i++) {
joiner.add("?");
}
String sql = "SELECT i.severity, " +
"m1.name AS medicine_name, " +
"m2.name AS incompatibility_name " +
"FROM Incompatibility i " +
"JOIN Medicine m1 ON i.id_medicine = m1.id " +
"JOIN Medicine m2 ON i.id_medicine_inc = m2.id " +
"WHERE m1.id = ? OR m1.id IN " + joiner.toString();
MapSqlParameterSource param = new MapSqlParameterSource();
param.addValue("id", id);
for (int i = 0; i < idInc.size(); i++) {
param.addValue("idInc" + i, idInc.get(i));
}
String sql = """
SELECT m."id" as "id_medicine_inc",
m."name" as "name_medicine_inc",
i."severity" as "severity"
FROM "Medicine" m
INNER JOIN "Incompatibility" i ON m."id" = i."id_medicine_inc"
WHERE i."id_medicine" = :id
""";
MapSqlParameterSource param = new MapSqlParameterSource(
Map.of("id", id)
);
List<MedicineIncResponse> medicineIncResponse = jdbcTemplate.query(sql, param, (rs, rowNum) -> new MedicineIncResponse(
rs.getInt("id_medicine_inc"),
rs.getString("name_medicine_inc"),
......@@ -132,8 +126,6 @@ public class MedicineRepository {
}
}
public List<MedicineResponse> findAllMedicines(int pageNumber, int pageSize) {
try {
String sql = """
......
......@@ -5,6 +5,7 @@ import br.com.amparo.backend.dto.medicine.MedicineResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
public interface MedicineService {
......@@ -14,7 +15,5 @@ public interface MedicineService {
Optional<List<MedicineIncResponse>> findAllIncompatibility(int id);
List<MedicineResponse> findAllMedicines(int pageNumber, int pageSize);
Optional<List<MedicineIncResponse>> findIncompatibility(int id, List<Integer> idInc);
List<MedicineIncResponse> listIncompatibility(List<Map<String, Integer>> list);
}
......@@ -33,7 +33,5 @@ public class MedicineServiceImpl implements MedicineService {
return repository.findAllIncompatibility(id);
}
public Optional<List<MedicineIncResponse>> findIncompatibility(int id, List<Integer> idInc) {
return repository.findIncompatibility(id, idInc);
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment