package models import ( "database/sql" "time" _ "github.com/lib/pq" ) var db *sql.DB type Measurement struct { CreatedAt time.Time Value float32 } func InitDB(dataSourceName string) (err error) { db, err = sql.Open("postgres", dataSourceName) if err != nil { return err } if err = db.Ping(); err != nil { return err } _, err = db.Exec(` CREATE TABLE IF NOT EXISTS measurements ( created_at TIMESTAMP, value NUMERIC (3, 1) ) `) return err } func AllMeasurements() (measurements []Measurement, err error) { rows, err := db.Query("SELECT * FROM measurements") if err != nil { return nil, err } defer rows.Close() for rows.Next() { var measurement Measurement err = rows.Scan(&measurement.CreatedAt, &measurement.Value) if err != nil { return nil, err } measurements = append(measurements, measurement) } if err = rows.Err(); err != nil { return nil, err } return measurements, nil } func InsertMeasurement(value float64) (err error) { _, err = db.Exec(` INSERT INTO measurements VALUES (current_timestamp, $1) `, value) return err }