basic service implementation and call it in handlers
This commit is contained in:
parent
15b1e9c82f
commit
92e94df61a
@ -2,7 +2,9 @@ package sensors
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log/slog"
|
||||
"nats-app/internal/iot"
|
||||
"time"
|
||||
|
||||
"github.com/nats-io/nats.go"
|
||||
)
|
||||
@ -56,7 +58,14 @@ func (h *Handlers) SetupEndpoints() *Handlers {
|
||||
func (h *Handlers) register() {
|
||||
h.NATS.Subscribe(subjectSensorsRegister, func(msg *nats.Msg) {
|
||||
handleRequest(msg, func(req Sensor) (Sensor, error) {
|
||||
// service layer
|
||||
if err := req.Validate(); err != nil {
|
||||
slog.Error("error validating sensor", "error", err)
|
||||
return Sensor{}, err
|
||||
}
|
||||
|
||||
if err := h.service.RegisterSensor(req); err != nil {
|
||||
return Sensor{}, err
|
||||
}
|
||||
|
||||
return req, nil
|
||||
})
|
||||
@ -66,7 +75,13 @@ func (h *Handlers) register() {
|
||||
func (h *Handlers) update() {
|
||||
h.NATS.Subscribe(subjectSensorsUpdate, func(msg *nats.Msg) {
|
||||
handleRequest(msg, func(req Sensor) (Sensor, error) {
|
||||
// service layer
|
||||
if err := req.Validate(); err != nil {
|
||||
return Sensor{}, err
|
||||
}
|
||||
|
||||
if err := h.service.UpdateSensor(req); err != nil {
|
||||
return Sensor{}, err
|
||||
}
|
||||
|
||||
return req, nil
|
||||
})
|
||||
@ -75,26 +90,30 @@ func (h *Handlers) update() {
|
||||
|
||||
func (h *Handlers) get() {
|
||||
h.NATS.Subscribe(subjectSensorsGet, func(msg *nats.Msg) {
|
||||
handleRequest(msg, func(req struct {
|
||||
SensorID string `json:"sensor_id"`
|
||||
}) (Sensor, error) {
|
||||
// service layer
|
||||
|
||||
return Sensor{}, nil
|
||||
handleRequest(msg, func(req SensorRequest) (Sensor, error) {
|
||||
return h.service.GetSensor(req.SensorID)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func (h *Handlers) getValues() {
|
||||
h.NATS.Subscribe(subjectSensorsValuesGet, func(msg *nats.Msg) {
|
||||
handleRequest(msg, func(req struct {
|
||||
SensorID string `json:"sensor_id"`
|
||||
From string `json:"from"`
|
||||
To string `json:"to"`
|
||||
}) ([]SensorData, error) {
|
||||
// service layer
|
||||
handleRequest(msg, func(req SensorDataRequest) (Sensor, error) {
|
||||
if err := req.Validate(); err != nil {
|
||||
return Sensor{}, err
|
||||
}
|
||||
|
||||
return []SensorData{}, nil
|
||||
from, err := time.Parse(time.RFC3339, *req.From)
|
||||
if err != nil {
|
||||
return Sensor{}, err
|
||||
}
|
||||
|
||||
to, err := time.Parse(time.RFC3339, *req.To)
|
||||
if err != nil {
|
||||
return Sensor{}, err
|
||||
}
|
||||
|
||||
return h.service.GetValues(req.SensorID, from, to)
|
||||
})
|
||||
})
|
||||
}
|
||||
@ -102,9 +121,7 @@ func (h *Handlers) getValues() {
|
||||
func (h *Handlers) list() {
|
||||
h.NATS.Subscribe(subjectSensorsList, func(msg *nats.Msg) {
|
||||
handleRequest(msg, func(req struct{}) ([]Sensor, error) {
|
||||
// service layer
|
||||
|
||||
return []Sensor{}, nil
|
||||
return h.service.ListSensors()
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
package sensors
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"log/slog"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
repo Repository
|
||||
@ -13,21 +16,40 @@ func NewService(repo Repository) *Service {
|
||||
}
|
||||
|
||||
func (s *Service) RegisterSensor(sensor Sensor) error {
|
||||
|
||||
err := s.repo.CreateSensor(sensor)
|
||||
if err != nil {
|
||||
slog.Error("error registering sensor", "error", err)
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Service) UpdateSensor(sensor Sensor) error {
|
||||
|
||||
s.repo.UpdateSensor(sensor)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Service) GetSensor(sensorID string) (Sensor, error) {
|
||||
|
||||
s.repo.ReadSensor(sensorID)
|
||||
|
||||
return Sensor{}, nil
|
||||
}
|
||||
|
||||
func (s *Service) GetValues(sensorID string, from, to time.Time) (Sensor, error) {
|
||||
|
||||
s.repo.ReadSensorValues(sensorID, from, to)
|
||||
|
||||
return Sensor{}, nil
|
||||
}
|
||||
|
||||
func (s *Service) ListSensors() ([]Sensor, error) {
|
||||
|
||||
s.repo.ReadAllSensors()
|
||||
|
||||
return []Sensor{}, nil
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user