Files
rpi-sensors/Database.go
Daniel Ledda ff7e787ac2 Working
2020-11-04 18:51:28 +01:00

71 lines
1.5 KiB
Go

package main
import (
"database/sql"
"fmt"
)
var ClimateDb *sql.DB
func InitDb() error {
db, err := sql.Open("mysql", "admin:sekna123jk@tcp(127.0.0.1:3306)/climate")
if err != nil {
fmt.Println("error connecting to database")
return err
}
ClimateDb = db
return nil
}
func CloseDb() {
if ClimateDb != nil {
err := ClimateDb.Close()
if err != nil {
fmt.Println("error closing database: " + err.Error())
}
}
}
func writeSnapshotToDb(snapshotSub *SnapshotSubmission) error {
query := fmt.Sprintf("INSERT INTO `snapshots` (`temp`, `humidity`, `co2`, `time`, `id`) VALUES (%v, %v, %v, '%v', NULL);",
snapshotSub.Temp,
snapshotSub.Humidity,
snapshotSub.Co2,
snapshotSub.Timestamp)
_, err := ClimateDb.Query(query)
if err != nil {
return err
}
return nil
}
func getSnapshotRecordsFromDb(rowCount int) ([]*SnapshotRecord, error) {
snapshots := make([]*SnapshotRecord, rowCount)
query := fmt.Sprintf("SELECT `%s`, `%s`, `%s`, `%s`, `%s` FROM `snapshots` ORDER BY `id` DESC LIMIT %v;",
"id",
"temp",
"humidity",
"co2",
"time",
rowCount,
)
rows, err := ClimateDb.Query(query)
if err != nil {
return nil, err
}
for i := 0; rows.Next(); i++ {
var snapshotRecord SnapshotRecord
err = rows.Scan(
snapshotRecord.Id,
snapshotRecord.Temp,
snapshotRecord.Humidity,
snapshotRecord.Co2,
snapshotRecord.Timestamp,
)
if err != nil {
return nil, err
}
snapshots = append(snapshots, &snapshotRecord)
}
return snapshots, nil
}