add register data mechanism

This commit is contained in:
2025-10-09 23:18:32 +02:00
parent b012db856c
commit fcc0d06f96
3 changed files with 81 additions and 3 deletions
+36 -3
View File
@@ -35,8 +35,11 @@ func (p *pgxRepo) CreateSensor(s Sensor) error {
return err
}
const createSensorDataQuery = `insert into registry (sensor_id, value, created_at) values ($1, $2, $3)`
func (p *pgxRepo) CreateSensorData(s SensorData) error {
return nil
_, err := p.Exec(context.Background(), createSensorDataQuery, s.SensorID, s.Value, s.Timestamp)
return err
}
func (p *pgxRepo) UpdateSensor(s Sensor) error {
@@ -106,7 +109,32 @@ func (i *inMemory) CreateSensor(s Sensor) error {
return nil
}
func (p *inMemory) CreateSensorData(s SensorData) error {
func (i *inMemory) CreateSensorData(data SensorData) error {
i.mu.Lock()
defer i.mu.Unlock()
sensor, exists := i.sensors[data.SensorID]
if !exists {
return ErrSensorNotFound
}
if sensor.SensorData == nil {
sensor.SensorData = &map[int]SensorData{}
}
key := int(data.Timestamp.Unix())
(*sensor.SensorData)[key] = data
if len(*sensor.SensorData) > 100 {
oldestKey := key
for k := range *sensor.SensorData {
if k < oldestKey {
oldestKey = k
}
}
delete(*sensor.SensorData, oldestKey)
}
return nil
}
@@ -169,7 +197,12 @@ func (d *DecoratorRepo) CreateSensor(s Sensor) error {
return nil
}
func (p *DecoratorRepo) CreateSensorData(s SensorData) error {
func (d *DecoratorRepo) CreateSensorData(data SensorData) error {
if err := d.db.CreateSensorData(data); err != nil {
return err
}
_ = d.memory.CreateSensorData(data)
return nil
}