weather-api/storage/inmemory-storage.go
2021-04-02 20:18:49 +02:00

66 lines
1.5 KiB
Go

package storage
import (
"fmt"
"github.com/google/uuid"
)
type inmemorySensorRegistry struct {
weatherSensors []*WeatherSensor
}
func NewInmemorySensorRegistry() *inmemorySensorRegistry {
sensorRegistry := new(inmemorySensorRegistry)
return sensorRegistry
}
func (registry *inmemorySensorRegistry) RegisterSensorByName(name string) (*WeatherSensor, error) {
exist, err := registry.ExistSensorName(name)
if err != nil {
return nil, err
}
if exist {
return nil, fmt.Errorf("Sensorname already exists")
}
sensor := new(WeatherSensor)
sensor.Name = name
sensor.Id = uuid.New()
registry.weatherSensors = append(registry.weatherSensors, sensor)
return sensor, nil
}
func (registry *inmemorySensorRegistry) ExistSensorName(name string) (bool, error) {
for _, s := range registry.weatherSensors {
if s.Name == name {
return true, nil
}
}
return false, nil
}
func (registry *inmemorySensorRegistry) ResolveSensorById(sensorId uuid.UUID) (*WeatherSensor, error) {
for _, s := range registry.weatherSensors {
if s.Id == sensorId {
return s, nil
}
}
return nil, fmt.Errorf("sensor does not exist")
}
func (registry *inmemorySensorRegistry) ExistSensor(sensor *WeatherSensor) (bool, error) {
for _, s := range registry.weatherSensors {
if s.Id == sensor.Id {
return true, nil
}
}
return false, nil
}
func (registry *inmemorySensorRegistry) GetSensors() ([]*WeatherSensor, error) {
return registry.weatherSensors, nil
}
func (registry *inmemorySensorRegistry) Close() error {
return nil
}