Add code to remove old data and switch the port to 8085
This commit is contained in:
parent
6287708d8c
commit
ce2cac6602
|
@ -66,8 +66,32 @@ func LatestTime(db *sql.DB) (int64, error) {
|
|||
return t, nil
|
||||
}
|
||||
|
||||
func OldestTime(db *sql.DB) (int64, error) {
|
||||
query := "SELECT MIN(time) FROM shrooms"
|
||||
rows, err := db.Query(query)
|
||||
if err != nil {
|
||||
return -1, fmt.Errorf("sql error: %w", err)
|
||||
}
|
||||
defer rows.Close()
|
||||
if !rows.Next() {
|
||||
// i guess the database is empty
|
||||
return 0, nil
|
||||
}
|
||||
t := int64(0)
|
||||
err = rows.Scan(&t)
|
||||
if err != nil {
|
||||
return -1, fmt.Errorf("sql scan error: %w", err)
|
||||
}
|
||||
return t, nil
|
||||
}
|
||||
|
||||
func InsertRow(db *sql.DB, s *DataJson) error {
|
||||
_, err := db.Exec("INSERT INTO shrooms (time, temperature, humidity, humidifier_volts) VALUES (?, ?, ?, ?)",
|
||||
*s.Time, *s.Temperature, *s.Humidity, *s.HumidifierVolts)
|
||||
return err
|
||||
}
|
||||
|
||||
func ClearOldRows(db *sql.DB, min_time int64) error {
|
||||
_, err := db.Exec("DELETE FROM shrooms WHERE t < ?", min_time)
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -38,6 +38,8 @@ type adminMsg struct {
|
|||
Msg map[string]interface{} `json:"data"`
|
||||
}
|
||||
|
||||
// returns a function that multiplies the number at the very last segment of the url
|
||||
// and returns the data that was collected in the last n*multiplier milliseconds
|
||||
func dumpData(db *sql.DB, multiplier int64) func(http.ResponseWriter, *http.Request) {
|
||||
return func(w http.ResponseWriter, req *http.Request) {
|
||||
now := time.Now().Unix()
|
||||
|
@ -200,9 +202,28 @@ func main() {
|
|||
http.HandleFunc("/api/update", updateHandler)
|
||||
http.HandleFunc("/api/status_update", statusUpdateHandler)
|
||||
|
||||
// TODO periodically clear old entries from the database
|
||||
// periodically clear old entries from the database
|
||||
go func() {
|
||||
// TODO maybe make this exit gracefully
|
||||
for {
|
||||
t, err := s.OldestTime(db)
|
||||
if err != nil {
|
||||
log.Println("unable to get oldest time: ", err)
|
||||
}
|
||||
now := time.Now().Unix()
|
||||
diff := now*1000 - t
|
||||
log.Println("oldest time", t, " current time", now, "diff", diff)
|
||||
if diff > 2*7*24*60*60*1000 {
|
||||
err = s.ClearOldRows(db, now-8*24*60*60*1000)
|
||||
if err != nil {
|
||||
log.Println("unable to delete rows: ", err)
|
||||
}
|
||||
}
|
||||
time.Sleep(24 * time.Hour)
|
||||
}
|
||||
}()
|
||||
|
||||
err = http.ListenAndServe("localhost:8080", nil)
|
||||
err = http.ListenAndServe("localhost:8085", nil)
|
||||
if err != nil {
|
||||
log.Fatal("unable to start server: ", err)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue