Improve SQLite
Some checks failed
ci/woodpecker/manual/woodpecker Pipeline failed

- Now the cache isn't cleared and fetched from zero each update, but only when there's missing information for a day
- Fixed a bug that prevented new users from saving changes in the config

NOTE: Turns out that HomeAssistant's API only returns data for the last 10 days. Looks like we will have to improve the caching system to work around this.
This commit is contained in:
MassiveBox 2023-01-04 15:57:16 +01:00
parent e9125b783c
commit 52ba0ea4c1
4 changed files with 156 additions and 55 deletions

View file

@ -64,6 +64,21 @@ func formatURL(url string) (string, error) {
func loadConfig() (config Config, err error, isFirstRun bool) {
db, err := sql.Open("sqlite3", "./database.db")
if err != nil {
return Config{}, err, false
}
_, err = db.Exec(`CREATE TABLE IF NOT EXISTS "cache" (
"time" NUMERIC NOT NULL,
"green_energy_percentage" REAL NOT NULL,
"energy_consumption" REAL NOT NULL,
PRIMARY KEY("time")
);`)
if err != nil {
return Config{}, err, false
}
var defaultConfig = Config{}
defaultConfig.Dashboard.Theme = "default"
defaultConfig.Dashboard.Name = "EcoDash"
@ -76,6 +91,7 @@ func loadConfig() (config Config, err error, isFirstRun bool) {
NewTab: true,
Primary: true,
})
defaultConfig.db = db
data, err := os.ReadFile("config.json")
if err != nil {
@ -96,23 +112,8 @@ func loadConfig() (config Config, err error, isFirstRun bool) {
if err != nil {
return Config{}, err, false
}
db, err := sql.Open("sqlite3", "./database.db")
if err != nil {
return Config{}, err, false
}
conf.db = db
_, err = db.Exec(`CREATE TABLE IF NOT EXISTS "cache" (
"time" NUMERIC NOT NULL,
"green_energy_percentage" REAL NOT NULL,
"energy_consumption" REAL NOT NULL,
PRIMARY KEY("time")
);`)
if err != nil {
return Config{}, err, false
}
return conf, nil, false
}