From a3886f778d0b752f9b92db0c16194d1b3676e7c8 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Mon, 10 Jul 2023 09:21:40 +0200 Subject: [PATCH] cmd/ursrv: Remove old, unused user movement code --- cmd/ursrv/aggregate/aggregate.go | 96 -------------------------------- cmd/ursrv/serve/serve.go | 53 ------------------ 2 files changed, 149 deletions(-) diff --git a/cmd/ursrv/aggregate/aggregate.go b/cmd/ursrv/aggregate/aggregate.go index 6bda3b4ab..daf2e1c3c 100644 --- a/cmd/ursrv/aggregate/aggregate.go +++ b/cmd/ursrv/aggregate/aggregate.go @@ -83,16 +83,6 @@ func setupDB(db *sql.DB) error { return err } - _, err = db.Exec(`CREATE TABLE IF NOT EXISTS UserMovement ( - Day TIMESTAMP NOT NULL, - Added INTEGER NOT NULL, - Bounced INTEGER NOT NULL, - Removed INTEGER NOT NULL - )`) - if err != nil { - return err - } - _, err = db.Exec(`CREATE TABLE IF NOT EXISTS Performance ( Day TIMESTAMP NOT NULL, TotFiles INTEGER NOT NULL, @@ -132,11 +122,6 @@ func setupDB(db *sql.DB) error { _, _ = db.Exec(`CREATE INDEX VersionDayIndex ON VersionSummary (Day)`) } - row = db.QueryRow(`SELECT 'MovementDayIndex'::regclass`) - if err := row.Scan(&t); err != nil { - _, _ = db.Exec(`CREATE INDEX MovementDayIndex ON UserMovement (Day)`) - } - row = db.QueryRow(`SELECT 'PerformanceDayIndex'::regclass`) if err := row.Scan(&t); err != nil { _, _ = db.Exec(`CREATE INDEX PerformanceDayIndex ON Performance (Day)`) @@ -181,87 +166,6 @@ func aggregateVersionSummary(db *sql.DB, since time.Time) (int64, error) { return res.RowsAffected() } -func aggregateUserMovement(db *sql.DB) (int64, error) { - rows, err := db.Query(`SELECT - DATE_TRUNC('day', Received) AS Day, - Report->>'uniqueID' - FROM ReportsJson - WHERE - Report->>'uniqueID' IS NOT NULL - AND Received < DATE_TRUNC('day', NOW()) - AND Report->>'version' like 'v_.%' - ORDER BY Day - `) - if err != nil { - return 0, err - } - defer rows.Close() - - firstSeen := make(map[string]time.Time) - lastSeen := make(map[string]time.Time) - var minTs time.Time - minTs = minTs.In(time.UTC) - - for rows.Next() { - var ts time.Time - var id string - if err := rows.Scan(&ts, &id); err != nil { - return 0, err - } - - if minTs.IsZero() { - minTs = ts - } - if _, ok := firstSeen[id]; !ok { - firstSeen[id] = ts - } - lastSeen[id] = ts - } - - type sumRow struct { - day time.Time - added int - removed int - bounced int - } - var sumRows []sumRow - for t := minTs; t.Before(time.Now().Truncate(24 * time.Hour)); t = t.AddDate(0, 0, 1) { - var added, removed, bounced int - old := t.Before(time.Now().AddDate(0, 0, -30)) - for id, first := range firstSeen { - last := lastSeen[id] - if first.Equal(t) && last.Equal(t) && old { - bounced++ - continue - } - if first.Equal(t) { - added++ - } - if last == t && old { - removed++ - } - } - sumRows = append(sumRows, sumRow{t, added, removed, bounced}) - } - - tx, err := db.Begin() - if err != nil { - return 0, err - } - if _, err := tx.Exec("DELETE FROM UserMovement"); err != nil { - tx.Rollback() - return 0, err - } - for _, r := range sumRows { - if _, err := tx.Exec("INSERT INTO UserMovement (Day, Added, Removed, Bounced) VALUES ($1, $2, $3, $4)", r.day, r.added, r.removed, r.bounced); err != nil { - tx.Rollback() - return 0, err - } - } - - return int64(len(sumRows)), tx.Commit() -} - func aggregatePerformance(db *sql.DB, since time.Time) (int64, error) { res, err := db.Exec(`INSERT INTO Performance ( SELECT diff --git a/cmd/ursrv/serve/serve.go b/cmd/ursrv/serve/serve.go index a7428f68b..343230c43 100644 --- a/cmd/ursrv/serve/serve.go +++ b/cmd/ursrv/serve/serve.go @@ -190,7 +190,6 @@ func (cli *CLI) Run() error { http.HandleFunc("/", srv.rootHandler) http.HandleFunc("/newdata", srv.newDataHandler) http.HandleFunc("/summary.json", srv.summaryHandler) - http.HandleFunc("/movement.json", srv.movementHandler) http.HandleFunc("/performance.json", srv.performanceHandler) http.HandleFunc("/blockstats.json", srv.blockStatsHandler) http.HandleFunc("/locations.json", srv.locationsHandler) @@ -363,25 +362,6 @@ func (s *server) summaryHandler(w http.ResponseWriter, r *http.Request) { w.Write(bs) } -func (s *server) movementHandler(w http.ResponseWriter, _ *http.Request) { - mov, err := getMovement(s.db) - if err != nil { - log.Println("movementHandler:", err) - http.Error(w, "Database Error", http.StatusInternalServerError) - return - } - - bs, err := json.Marshal(mov) - if err != nil { - log.Println("movementHandler:", err) - http.Error(w, "JSON Encode Error", http.StatusInternalServerError) - return - } - - w.Header().Set("Content-Type", "application/json") - w.Write(bs) -} - func (s *server) performanceHandler(w http.ResponseWriter, _ *http.Request) { perf, err := getPerformance(s.db) if err != nil { @@ -1038,39 +1018,6 @@ func getSummary(db *sql.DB, min int) (summary, error) { return s, nil } -func getMovement(db *sql.DB) ([][]interface{}, error) { - rows, err := db.Query(`SELECT Day, Added, Removed, Bounced FROM UserMovement WHERE Day > now() - '3 year'::INTERVAL ORDER BY Day`) - if err != nil { - return nil, err - } - defer rows.Close() - - res := [][]interface{}{ - {"Day", "Joined", "Left", "Bounced"}, - } - - for rows.Next() { - var day time.Time - var added, removed, bounced int - err := rows.Scan(&day, &added, &removed, &bounced) - if err != nil { - return nil, err - } - - row := []interface{}{day.Format("2006-01-02"), added, -removed, bounced} - if removed == 0 { - row[2] = nil - } - if bounced == 0 { - row[3] = nil - } - - res = append(res, row) - } - - return res, nil -} - func getPerformance(db *sql.DB) ([][]interface{}, error) { rows, err := db.Query(`SELECT Day, TotFiles, TotMiB, SHA256Perf, MemorySize, MemoryUsageMiB FROM Performance WHERE Day > now() - '5 year'::INTERVAL ORDER BY Day`) if err != nil {