55 lines
1.1 KiB
Go
55 lines
1.1 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) {
|
|
records := make([]*SnapshotRecord, rowCount)
|
|
query := fmt.Sprintf("SELECT * FROM `snapshots` ORDER BY `id` DESC LIMIT %v;", rowCount)
|
|
rows, err := ClimateDb.Query(query)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
rows.Next()
|
|
err = rows.Scan(records)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return records, nil
|
|
} |