mirror of
https://github.com/ItsDek/sensor-api.git
synced 2026-08-30 10:59:12 +00:00
feat: add in-memory repository with concurrent storage
This commit is contained in:
@@ -17,7 +17,6 @@ import org.springframework.web.bind.annotation.ResponseStatus;
|
|||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
public class MeasurementController {
|
public class MeasurementController {
|
||||||
|
|
||||||
private final MeasurementService measurementService;
|
private final MeasurementService measurementService;
|
||||||
|
|
||||||
MeasurementController(MeasurementService measurementService) {
|
MeasurementController(MeasurementService measurementService) {
|
||||||
@@ -38,7 +37,7 @@ public class MeasurementController {
|
|||||||
@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 measurementService.save(measurement);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package dev.deklab.sensorapi.repository;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import dev.deklab.model.Measurement;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class MeasurementRepository {
|
||||||
|
private final ConcurrentHashMap<Long, Measurement> store = new ConcurrentHashMap<>();
|
||||||
|
private final AtomicLong idGenerator = new AtomicLong();
|
||||||
|
|
||||||
|
public List<Measurement> findAll() {
|
||||||
|
return new ArrayList<>(store.values());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<Measurement> findById(Long id) {
|
||||||
|
return Optional.ofNullable(store.get(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Measurement save(Measurement measurement){
|
||||||
|
Long newId = idGenerator.incrementAndGet();
|
||||||
|
Measurement saved = new Measurement(newId,measurement.temperature(),measurement.humidity());
|
||||||
|
store.put(newId, saved);
|
||||||
|
return saved;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -6,23 +6,22 @@ import java.util.Optional;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import dev.deklab.model.Measurement;
|
import dev.deklab.model.Measurement;
|
||||||
|
import dev.deklab.sensorapi.repository.MeasurementRepository;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class MeasurementService {
|
public class MeasurementService {
|
||||||
private Measurement m1 = new Measurement(1L, 21.5, 48);
|
private final MeasurementRepository measurementRepository;
|
||||||
private Measurement m2 = new Measurement(2L, 25.5, 38);
|
MeasurementService(MeasurementRepository measurementRepository){
|
||||||
private Measurement m3 = new Measurement(3L, 29.5, 58);
|
this.measurementRepository = measurementRepository;
|
||||||
|
|
||||||
private List<Measurement> measurements = List.of(m1, m2, m3);
|
|
||||||
public List<Measurement> returnAllMeasurements(){
|
|
||||||
return measurements;
|
|
||||||
}
|
}
|
||||||
public Optional<Measurement> searchById(Long id){
|
public List<Measurement> returnAllMeasurements() {
|
||||||
for (int i = 0; i < measurements.size(); i++) {
|
return measurementRepository.findAll();
|
||||||
if (id.equals(measurements.get(i).id())) {
|
}
|
||||||
return Optional.of(measurements.get(i));
|
|
||||||
}
|
public Optional<Measurement> searchById(Long id) {
|
||||||
}
|
return measurementRepository.findById(id);
|
||||||
return Optional.empty();
|
}
|
||||||
|
public Measurement save(Measurement measurement){
|
||||||
|
return measurementRepository.save(measurement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user