fix(pkg/types): use measured values as struct instead interface
This commit is contained in:
		| @@ -1,62 +0,0 @@ | ||||
| package types | ||||
|  | ||||
| import "time" | ||||
|  | ||||
| // Humidity ... | ||||
| type Humidity struct { | ||||
| 	HumidityID       string     `json:"humidity_id" xml:"humidity_id"` | ||||
| 	HumidityValue    float64    `json:"humidity_value,string" xml:"humidity_value"` | ||||
| 	HumidityFromDate time.Time  `json:"humidity_from_date" xml:"humidity_from_date"` | ||||
| 	HumidityTillDate time.Time  `json:"humidity_till_date" xml:"humidity_till_date"` | ||||
| 	SensorID         string     `json:"sensor_id" xml:"sensor_id"` | ||||
| 	CreationDate     *time.Time `json:"creation_date" xml:"creation_date"` | ||||
| 	UpdateDate       *time.Time `json:"update_date" xml:"update_date"` | ||||
| } | ||||
|  | ||||
| func (h *Humidity) GetID() string { | ||||
| 	return h.HumidityID | ||||
| } | ||||
|  | ||||
| func (h *Humidity) GetValue() float64 { | ||||
| 	return h.HumidityValue | ||||
| } | ||||
|  | ||||
| func (h *Humidity) GetFromDate() time.Time { | ||||
| 	return h.HumidityFromDate | ||||
| } | ||||
|  | ||||
| func (h *Humidity) GetTillDate() time.Time { | ||||
| 	return h.HumidityTillDate | ||||
| } | ||||
|  | ||||
| func (h *Humidity) GetSensorID() string { | ||||
| 	return h.SensorID | ||||
| } | ||||
|  | ||||
| func (h *Humidity) GetCreationDate() *time.Time { | ||||
| 	return h.CreationDate | ||||
| } | ||||
|  | ||||
| func (h *Humidity) GetUpdateDate() *time.Time { | ||||
| 	return h.UpdateDate | ||||
| } | ||||
|  | ||||
| func (h *Humidity) GetMeasuredValueType() MeasuredValueType { | ||||
| 	return MeasuredValueTypeHumidity | ||||
| } | ||||
|  | ||||
| func (h *Humidity) SetValue(value float64) { | ||||
| 	h.HumidityValue = value | ||||
| } | ||||
|  | ||||
| func (h *Humidity) SetTillDate(date time.Time) { | ||||
| 	h.HumidityTillDate = date | ||||
| } | ||||
|  | ||||
| func (h *Humidity) SetCreationDate(date *time.Time) { | ||||
| 	h.CreationDate = date | ||||
| } | ||||
|  | ||||
| func (h *Humidity) SetUpdateDate(date *time.Time) { | ||||
| 	h.UpdateDate = date | ||||
| } | ||||
| @@ -1,21 +1,19 @@ | ||||
| package types | ||||
|  | ||||
| import "time" | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"time" | ||||
| ) | ||||
|  | ||||
| type MeasuredValue interface { | ||||
| 	GetID() string | ||||
| 	GetMeasuredValueType() MeasuredValueType | ||||
| 	GetValue() float64 | ||||
| 	GetFromDate() time.Time | ||||
| 	GetTillDate() time.Time | ||||
| 	GetSensorID() string | ||||
| 	GetCreationDate() *time.Time | ||||
| 	GetUpdateDate() *time.Time | ||||
|  | ||||
| 	SetValue(value float64) | ||||
| 	SetTillDate(date time.Time) | ||||
| 	SetCreationDate(date *time.Time) | ||||
| 	SetUpdateDate(date *time.Time) | ||||
| type MeasuredValue struct { | ||||
| 	ID           string            `json:"id" xml:"id"` | ||||
| 	Value        float64           `json:"value,string" xml:"value,string"` | ||||
| 	ValueType    MeasuredValueType `json:"value_type" xml:"value_type"` | ||||
| 	FromDate     time.Time         `json:"from_date" xml:"from_date"` | ||||
| 	TillDate     time.Time         `json:"till_date" xml:"till_date"` | ||||
| 	SensorID     string            `json:"sensor_id" xml:"sensor_id"` | ||||
| 	CreationDate *time.Time        `json:"creation_date" xml:"creation_date"` | ||||
| 	UpdateDate   *time.Time        `json:"update_date" xml:"update_date"` | ||||
| } | ||||
|  | ||||
| type MeasuredValueType string | ||||
| @@ -31,3 +29,24 @@ var MeasuredValueTypes = []MeasuredValueType{ | ||||
| 	MeasuredValueTypePressure, | ||||
| 	MeasuredValueTypeTemperature, | ||||
| } | ||||
|  | ||||
| func SelectMeasuredValues(measuredValueType MeasuredValueType, measuredValues []*MeasuredValue) []*MeasuredValue { | ||||
| 	cachedMeasuredValues := make([]*MeasuredValue, 0) | ||||
| 	for _, measuredValue := range measuredValues { | ||||
| 		if measuredValue.ValueType == measuredValueType { | ||||
| 			cachedMeasuredValues = append(cachedMeasuredValues, measuredValue) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return cachedMeasuredValues | ||||
| } | ||||
|  | ||||
| func SelectMeasuredValueType(valueType string) (*MeasuredValueType, error) { | ||||
| 	for _, measuredValueType := range MeasuredValueTypes { | ||||
| 		if fmt.Sprint(measuredValueType) == valueType { | ||||
| 			return &measuredValueType, nil | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return nil, fmt.Errorf("Can not determine value type: %v", valueType) | ||||
| } | ||||
|   | ||||
| @@ -1,64 +0,0 @@ | ||||
| package types | ||||
|  | ||||
| import ( | ||||
| 	"time" | ||||
| ) | ||||
|  | ||||
| // Pressure ... | ||||
| type Pressure struct { | ||||
| 	PressureID       string     `json:"pressure_id" xml:"pressure_id"` | ||||
| 	PressureValue    float64    `json:"pressure_value,string" xml:"pressure_value,string"` | ||||
| 	PressureFromDate time.Time  `json:"pressure_from_date" xml:"pressure_from_date"` | ||||
| 	PressureTillDate time.Time  `json:"pressure_till_date" xml:"pressure_till_date"` | ||||
| 	SensorID         string     `json:"sensor_id" xml:"sensor_id"` | ||||
| 	CreationDate     *time.Time `json:"creation_date" xml:"creation_date"` | ||||
| 	UpdateDate       *time.Time `json:"update_date" xml:"update_date"` | ||||
| } | ||||
|  | ||||
| func (t *Pressure) GetID() string { | ||||
| 	return t.PressureID | ||||
| } | ||||
|  | ||||
| func (t *Pressure) GetValue() float64 { | ||||
| 	return t.PressureValue | ||||
| } | ||||
|  | ||||
| func (t *Pressure) GetFromDate() time.Time { | ||||
| 	return t.PressureFromDate | ||||
| } | ||||
|  | ||||
| func (t *Pressure) GetTillDate() time.Time { | ||||
| 	return t.PressureTillDate | ||||
| } | ||||
|  | ||||
| func (t *Pressure) GetSensorID() string { | ||||
| 	return t.SensorID | ||||
| } | ||||
|  | ||||
| func (t *Pressure) GetCreationDate() *time.Time { | ||||
| 	return t.CreationDate | ||||
| } | ||||
|  | ||||
| func (t *Pressure) GetUpdateDate() *time.Time { | ||||
| 	return t.UpdateDate | ||||
| } | ||||
|  | ||||
| func (t *Pressure) GetMeasuredValueType() MeasuredValueType { | ||||
| 	return MeasuredValueTypePressure | ||||
| } | ||||
|  | ||||
| func (t *Pressure) SetValue(value float64) { | ||||
| 	t.PressureValue = value | ||||
| } | ||||
|  | ||||
| func (t *Pressure) SetTillDate(date time.Time) { | ||||
| 	t.PressureTillDate = date | ||||
| } | ||||
|  | ||||
| func (t *Pressure) SetCreationDate(date *time.Time) { | ||||
| 	t.CreationDate = date | ||||
| } | ||||
|  | ||||
| func (t *Pressure) SetUpdateDate(date *time.Time) { | ||||
| 	t.UpdateDate = date | ||||
| } | ||||
| @@ -1,64 +0,0 @@ | ||||
| package types | ||||
|  | ||||
| import ( | ||||
| 	"time" | ||||
| ) | ||||
|  | ||||
| // Temperature ... | ||||
| type Temperature struct { | ||||
| 	TemperatureID       string     `json:"temperature_id" xml:"temperature_id"` | ||||
| 	TemperatureValue    float64    `json:"temperature_value,string" xml:"temperature_value,string"` | ||||
| 	TemperatureFromDate time.Time  `json:"temperature_from_date" xml:"temperature_from_date"` | ||||
| 	TemperatureTillDate time.Time  `json:"temperature_till_date" xml:"temperature_till_date"` | ||||
| 	SensorID            string     `json:"sensor_id" xml:"sensor_id"` | ||||
| 	CreationDate        *time.Time `json:"creation_date" xml:"creation_date"` | ||||
| 	UpdateDate          *time.Time `json:"update_date" xml:"update_date"` | ||||
| } | ||||
|  | ||||
| func (t *Temperature) GetID() string { | ||||
| 	return t.TemperatureID | ||||
| } | ||||
|  | ||||
| func (t *Temperature) GetValue() float64 { | ||||
| 	return t.TemperatureValue | ||||
| } | ||||
|  | ||||
| func (t *Temperature) GetFromDate() time.Time { | ||||
| 	return t.TemperatureFromDate | ||||
| } | ||||
|  | ||||
| func (t *Temperature) GetTillDate() time.Time { | ||||
| 	return t.TemperatureTillDate | ||||
| } | ||||
|  | ||||
| func (t *Temperature) GetSensorID() string { | ||||
| 	return t.SensorID | ||||
| } | ||||
|  | ||||
| func (t *Temperature) GetCreationDate() *time.Time { | ||||
| 	return t.CreationDate | ||||
| } | ||||
|  | ||||
| func (t *Temperature) GetUpdateDate() *time.Time { | ||||
| 	return t.UpdateDate | ||||
| } | ||||
|  | ||||
| func (t *Temperature) GetMeasuredValueType() MeasuredValueType { | ||||
| 	return MeasuredValueTypeTemperature | ||||
| } | ||||
|  | ||||
| func (t *Temperature) SetValue(value float64) { | ||||
| 	t.TemperatureValue = value | ||||
| } | ||||
|  | ||||
| func (t *Temperature) SetTillDate(date time.Time) { | ||||
| 	t.TemperatureTillDate = date | ||||
| } | ||||
|  | ||||
| func (t *Temperature) SetCreationDate(date *time.Time) { | ||||
| 	t.CreationDate = date | ||||
| } | ||||
|  | ||||
| func (t *Temperature) SetUpdateDate(date *time.Time) { | ||||
| 	t.UpdateDate = date | ||||
| } | ||||
| @@ -1,31 +0,0 @@ | ||||
| package typeswitch | ||||
|  | ||||
| import ( | ||||
| 	"github.com/go-flucky/flucky/pkg/types" | ||||
| ) | ||||
|  | ||||
| func HumidityValues(measuredValues []types.MeasuredValue) []types.MeasuredValue { | ||||
| 	cachedMeasuredValues := make([]types.MeasuredValue, 0) | ||||
|  | ||||
| 	for _, measuredValue := range measuredValues { | ||||
| 		switch v := measuredValue.(type) { | ||||
| 		case *types.Humidity: | ||||
| 			cachedMeasuredValues = append(cachedMeasuredValues, v) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return cachedMeasuredValues | ||||
| } | ||||
|  | ||||
| func TemperatureValues(measuredValues []types.MeasuredValue) []types.MeasuredValue { | ||||
| 	cachedMeasuredValues := make([]types.MeasuredValue, 0) | ||||
|  | ||||
| 	for _, measuredValue := range measuredValues { | ||||
| 		switch v := measuredValue.(type) { | ||||
| 		case *types.Temperature: | ||||
| 			cachedMeasuredValues = append(cachedMeasuredValues, v) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return cachedMeasuredValues | ||||
| } | ||||
		Reference in New Issue
	
	Block a user