feat(pkg/db): postgres database

This commit is contained in:
2019-08-20 21:37:45 +02:00
parent c0aa155f36
commit 60ee044b88
53 changed files with 2269 additions and 81 deletions

View File

@ -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")
}

View File

@ -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")
)

View File

@ -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
}