feat(pkg/db): postgres database
This commit is contained in:
@ -7,6 +7,7 @@ import (
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/go-flucky/flucky/pkg/internal/format"
|
||||
"github.com/go-flucky/flucky/pkg/types"
|
||||
)
|
||||
|
||||
@ -50,7 +51,7 @@ func (cl *csvLogfile) Read() ([]*types.MeasuredValue, error) {
|
||||
// Times
|
||||
times := make([]time.Time, 0)
|
||||
for _, i := range []int{3, 4} {
|
||||
time, err := time.Parse(timeFormat, record[i])
|
||||
time, err := time.Parse(format.TimeFormat, record[i])
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%v %v: %v", errorParseTime, record[i], err)
|
||||
}
|
||||
@ -67,14 +68,14 @@ func (cl *csvLogfile) Read() ([]*types.MeasuredValue, error) {
|
||||
}
|
||||
|
||||
// Creation date
|
||||
creationDate, err := time.Parse(timeFormat, record[6])
|
||||
creationDate, err := time.Parse(format.TimeFormat, record[6])
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%v %v: %v", errorParseTime, record[6], err)
|
||||
}
|
||||
measuredValue.CreationDate = &creationDate
|
||||
measuredValue.CreationDate = creationDate
|
||||
|
||||
if record[7] != "null" {
|
||||
updateDate, err := time.Parse(timeFormat, record[7])
|
||||
updateDate, err := time.Parse(format.TimeFormat, record[7])
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%v %v: %v", errorParseTime, record[7], err)
|
||||
}
|
||||
@ -106,19 +107,15 @@ func (cl *csvLogfile) Write(measuredValues []*types.MeasuredValue) error {
|
||||
measuredValue.ID,
|
||||
fmt.Sprintf("%v", measuredValue.ValueType),
|
||||
fmt.Sprintf("%v", measuredValue.Value),
|
||||
measuredValue.FromDate.Format(timeFormat),
|
||||
measuredValue.TillDate.Format(timeFormat),
|
||||
measuredValue.FromDate.Format(format.TimeFormat),
|
||||
measuredValue.TillDate.Format(format.TimeFormat),
|
||||
measuredValue.SensorID,
|
||||
}
|
||||
|
||||
if measuredValue.CreationDate != nil {
|
||||
record = append(record, measuredValue.CreationDate.Format(timeFormat))
|
||||
} else {
|
||||
record = append(record, "null")
|
||||
}
|
||||
record = append(record, measuredValue.CreationDate.Format(format.TimeFormat))
|
||||
|
||||
if measuredValue.UpdateDate != nil {
|
||||
record = append(record, measuredValue.UpdateDate.Format(timeFormat))
|
||||
record = append(record, measuredValue.UpdateDate.Format(format.TimeFormat))
|
||||
} else {
|
||||
record = append(record, "null")
|
||||
}
|
||||
|
@ -2,25 +2,27 @@ package logfile
|
||||
|
||||
import "errors"
|
||||
|
||||
var errorLogfileCreate = errors.New("Can not create logfile")
|
||||
var errorLogfileDecode = errors.New("Can not decode from reader")
|
||||
var errorLogfileEncode = errors.New("Can not encode from writer")
|
||||
var errorLogfileMarshal = errors.New("Can not marshal values")
|
||||
var errorLogfileNotFound = errors.New("Can not find logfile")
|
||||
var errorLogfileOpen = errors.New("Can not open logfile")
|
||||
var errorLogfileRead = errors.New("Can not read from given reader")
|
||||
var errorLogfileUnmarshal = errors.New("Can not unmarshal values")
|
||||
var errorLogfileWrite = errors.New("Can not write with given writer")
|
||||
var (
|
||||
errorLogfileCreate = errors.New("Can not create logfile")
|
||||
errorLogfileDecode = errors.New("Can not decode from reader")
|
||||
errorLogfileEncode = errors.New("Can not encode from writer")
|
||||
errorLogfileMarshal = errors.New("Can not marshal values")
|
||||
errorLogfileNotFound = errors.New("Can not find logfile")
|
||||
errorLogfileOpen = errors.New("Can not open logfile")
|
||||
errorLogfileRead = errors.New("Can not read from given reader")
|
||||
errorLogfileUnmarshal = errors.New("Can not unmarshal values")
|
||||
errorLogfileWrite = errors.New("Can not write with given writer")
|
||||
|
||||
var errorParseFloat = errors.New("Can not parse float")
|
||||
var errorParseMeasurementUnit = errors.New("Can not parse mesaurement unit")
|
||||
var errorParseTime = errors.New("Can not parse time")
|
||||
errorParseFloat = errors.New("Can not parse float")
|
||||
errorParseMeasurementUnit = errors.New("Can not parse mesaurement unit")
|
||||
errorParseTime = errors.New("Can not parse time")
|
||||
|
||||
var errorNoValidHumidityID = errors.New("No valid humidity id detected or available")
|
||||
var errorNoValidMesuredValue = errors.New("No mesured value detected or available")
|
||||
var errorNoValidSensorID = errors.New("No sensor id detected or available")
|
||||
var errorNoValidTemperatureID = errors.New("No valid temperature id detected or available")
|
||||
var errorNoValidTime = errors.New("No time detected or available")
|
||||
var errorNoValidTimePeriods = errors.New("No valid time periods")
|
||||
errorNoValidHumidityID = errors.New("No valid humidity id detected or available")
|
||||
errorNoValidMesuredValue = errors.New("No mesured value detected or available")
|
||||
errorNoValidSensorID = errors.New("No sensor id detected or available")
|
||||
errorNoValidTemperatureID = errors.New("No valid temperature id detected or available")
|
||||
errorNoValidTime = errors.New("No time detected or available")
|
||||
errorNoValidTimePeriods = errors.New("No valid time periods")
|
||||
|
||||
var errorTypeSwitch = errors.New("Can not detect type via type switch")
|
||||
errorTypeSwitch = errors.New("Can not detect type via type switch")
|
||||
)
|
||||
|
@ -4,13 +4,12 @@ import (
|
||||
"math"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"github.com/go-flucky/flucky/pkg/internal/format"
|
||||
"github.com/go-flucky/flucky/pkg/types"
|
||||
)
|
||||
|
||||
// var validUUID = regexp.MustCompile("^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[8|9|aA|bB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$")
|
||||
var timeFormat = "2006-01-02T15:04:05.999999Z07:00"
|
||||
|
||||
// Append adds an array of several measured values to a logfile
|
||||
func Append(logfile Logfile, compression bool, round float64, measuredValues []*types.MeasuredValue) error {
|
||||
@ -56,7 +55,7 @@ func Compression(measuredValues []*types.MeasuredValue) []*types.MeasuredValue {
|
||||
return measuredValues[i].FromDate.Before(measuredValues[j].TillDate)
|
||||
})
|
||||
|
||||
now := time.Now()
|
||||
now := format.FormatedTime()
|
||||
|
||||
for _, measuredValue := range measuredValues {
|
||||
if _, ok := lastMeasuredValuesBySensors[measuredValue.SensorID]; !ok {
|
||||
@ -124,11 +123,10 @@ func New(logfile string) Logfile {
|
||||
|
||||
}
|
||||
|
||||
func writeCreationDate(measuredValues []*types.MeasuredValue) {
|
||||
now := time.Now()
|
||||
func writeCreationDate(measuredValues []*types.MeasuredValue) error {
|
||||
for _, measuredValue := range measuredValues {
|
||||
if measuredValue.CreationDate == nil {
|
||||
measuredValue.CreationDate = &now
|
||||
}
|
||||
now := format.FormatedTime()
|
||||
measuredValue.CreationDate = now
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user