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[i] = &snapshotRecord } return snapshots, nil }