refactor: extract measurement logic into service layer

This commit is contained in:
Dek Dalier
2026-08-17 22:01:00 +02:00
parent d1eb762dca
commit 01c7458220
2 changed files with 38 additions and 13 deletions

View File

@@ -1,5 +1,6 @@
package dev.deklab.sensorapi.controller; package dev.deklab.sensorapi.controller;
import dev.deklab.sensorapi.service.MeasurementService;
import java.util.List; import java.util.List;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -14,34 +15,30 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.ResponseStatus;
@RestController @RestController
public class MeasurementController { public class MeasurementController {
Measurement m1 = new Measurement(1L, 21.5, 48);
Measurement m2 = new Measurement(2L, 25.5, 38);
Measurement m3 = new Measurement(3L, 29.5, 58);
List<Measurement> measurements = List.of(m1, m2, m3); private final MeasurementService measurementService;
MeasurementController(MeasurementService measurementService) {
this.measurementService = measurementService;
}
@GetMapping("/measurements") @GetMapping("/measurements")
public List<Measurement> returnAllMeasurements() { public List<Measurement> returnAllMeasurements() {
return measurements; return measurementService.returnAllMeasurements();
} }
@GetMapping("/measurements/{id}") @GetMapping("/measurements/{id}")
public Measurement returnMeasurementsById(@PathVariable Long id) { public Measurement returnMeasurementsById(@PathVariable Long id) {
for (int i = 0; i < measurements.size(); i++) { return measurementService.searchById(id)
if (id.equals(measurements.get(i).id())) { .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
return measurements.get(i);
}
}
throw new ResponseStatusException(HttpStatus.NOT_FOUND);
} }
@PostMapping("/measurements") @PostMapping("/measurements")
@ResponseStatus(HttpStatus.CREATED) @ResponseStatus(HttpStatus.CREATED)
public Measurement postMeasurement(@RequestBody Measurement measurement) { public Measurement postMeasurement(@RequestBody Measurement measurement) {
return measurement; return measurement;
} }
} }

View File

@@ -0,0 +1,28 @@
package dev.deklab.sensorapi.service;
import java.util.List;
import java.util.Optional;
import org.springframework.stereotype.Service;
import dev.deklab.model.Measurement;
@Service
public class MeasurementService {
private Measurement m1 = new Measurement(1L, 21.5, 48);
private Measurement m2 = new Measurement(2L, 25.5, 38);
private Measurement m3 = new Measurement(3L, 29.5, 58);
private List<Measurement> measurements = List.of(m1, m2, m3);
public List<Measurement> returnAllMeasurements(){
return measurements;
}
public Optional<Measurement> searchById(Long id){
for (int i = 0; i < measurements.size(); i++) {
if (id.equals(measurements.get(i).id())) {
return Optional.of(measurements.get(i));
}
}
return Optional.empty();
}
}