diff --git a/storage/inmemory-sensor-registry.go b/storage/inmemory-sensor-registry.go index 1f77f44..543ff3f 100644 --- a/storage/inmemory-sensor-registry.go +++ b/storage/inmemory-sensor-registry.go @@ -57,6 +57,26 @@ func (registry *inmemorySensorRegistry) ExistSensor(sensor *WeatherSensor) (bool return false, nil } +func (registry *inmemorySensorRegistry) DeleteSensor(sensorId uuid.UUID) error { + for i, s := range registry.weatherSensors { + if s.Id == sensorId { + registry.weatherSensors = remove(registry.weatherSensors, i) + return nil + } + } + return nil +} + +func (registry *inmemorySensorRegistry) UpdateSensor(sensor *WeatherSensor) error { + for i, s := range registry.weatherSensors { + if s.Id == sensor.Id { + registry.weatherSensors[i] = sensor + } + } + + return nil +} + func (registry *inmemorySensorRegistry) GetSensors() ([]*WeatherSensor, error) { return registry.weatherSensors, nil } @@ -64,3 +84,8 @@ func (registry *inmemorySensorRegistry) GetSensors() ([]*WeatherSensor, error) { func (registry *inmemorySensorRegistry) Close() error { return nil } + +func remove(s []*WeatherSensor, i int) []*WeatherSensor { + s[len(s)-1], s[i] = s[i], s[len(s)-1] + return s[:len(s)-1] +}