Skip to content

Commit

Permalink
fix: Insert correct time into weather data cache
Browse files Browse the repository at this point in the history
  • Loading branch information
MikMuellerDev committed Aug 10, 2023
1 parent e3a0869 commit 46fadb8
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 18 deletions.
4 changes: 2 additions & 2 deletions core/database/powerUsage.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func createPowerUsageTable() error {
}

// Inserts a new data point into the power usage time record table
func AddPowerUsagePoint(onData PowerDrawData, offData PowerDrawData, entryTime time.Time) (uint, error) {
func AddPowerUsagePoint(onData PowerDrawData, offData PowerDrawData, entryTime time.Time) (uint64, error) {
query, err := db.Prepare(`
INSERT INTO
powerUsage(
Expand Down Expand Up @@ -86,7 +86,7 @@ func AddPowerUsagePoint(onData PowerDrawData, offData PowerDrawData, entryTime t
log.Error("Failed to add power usage point: obtaining id failed: ", err.Error())
return 0, err
}
return uint(newId), nil
return uint64(newId), nil
}

// Returns records from the power usage records
Expand Down
46 changes: 33 additions & 13 deletions core/database/weather.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package database

import (
"database/sql"
"fmt"
"time"
)

Expand Down Expand Up @@ -46,7 +47,7 @@ func GetWeatherDataRecords(maxAgeMinutes int) ([]WeatherMeasurement, error) {
Temperature,
FeelsLike,
Humidity
From weather
FROM weather
`

if maxAgeMinutes >= 0 {
Expand Down Expand Up @@ -100,13 +101,18 @@ func GetWeatherDataRecords(maxAgeMinutes int) ([]WeatherMeasurement, error) {

func AddWeatherDataRecord(
weatherTitle string,
weatherTime time.Time,
weatherTime *time.Time,
weatherDescription string,
temperature float32,
feelsLike float32,
humidity uint8,
) (uint64, error) {
query, err := db.Prepare(`
defaultOrQuestionMark := "DEFAULT"
if weatherTime != nil {
defaultOrQuestionMark = "?"
}

query, err := db.Prepare(fmt.Sprintf(`
INSERT INTO
weather(
Id,
Expand All @@ -117,21 +123,35 @@ func AddWeatherDataRecord(
FeelsLike,
Humidity
)
VALUES(DEFAULT, ?, ?, ?, ?, ?, ?)
`)
VALUES(DEFAULT, %s, ?, ?, ?, ?, ?)
`, defaultOrQuestionMark))
if err != nil {
log.Error("Failed to add weather measurement: preparing query failed: ", err.Error())
return 0, err
}
defer query.Close()
res, err := query.Exec(
weatherTime,
weatherTitle,
weatherDescription,
temperature,
feelsLike,
humidity,
)

var res sql.Result

if weatherTime != nil {
res, err = query.Exec(
weatherTime,
weatherTitle,
weatherDescription,
temperature,
feelsLike,
humidity,
)
} else {
res, err = query.Exec(
weatherTitle,
weatherDescription,
temperature,
feelsLike,
humidity,
)
}

if err != nil {
log.Error("Failed to add weather measurement: executing query failed: ", err.Error())
return 0, err
Expand Down
2 changes: 1 addition & 1 deletion core/database/weather_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func TestWeatherData(t *testing.T) {
// Add a dummy weather record
id, err := AddWeatherDataRecord(
"cloudy",
time.Now(),
time.Now().Local(),
"some clouds",
42.1,
3.1415926,
Expand Down
3 changes: 2 additions & 1 deletion core/import.go
Original file line number Diff line number Diff line change
Expand Up @@ -453,9 +453,10 @@ func createCacheDataInDatabase(cacheData config.SetupCacheData) error {
log.Trace("Importing weather data...")
defer func() { wg.Done() }()
for _, weatherEntry := range cacheData.WeatherHistory {
timestamp := time.UnixMilli(int64(weatherEntry.Time)).Local()
if _, err := database.AddWeatherDataRecord(
weatherEntry.WeatherTitle,
time.UnixMilli(int64(weatherEntry.Time)),
&timestamp,
weatherEntry.WeatherDescription,
weatherEntry.Temperature,
weatherEntry.FeelsLike,
Expand Down
2 changes: 1 addition & 1 deletion services/weather/weather.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ func GetCurrentWeather() (WeatherMeasurement, error) {
// Insert the new record into the database
id, err := database.AddWeatherDataRecord(
newLabel,
time.Now(),
nil,
newDescription,
float32(freshData.Main.Temp),
float32(freshData.Main.FeelsLike),
Expand Down

0 comments on commit 46fadb8

Please sign in to comment.