From e67e23c0507036958cc4e9975d0ac51ecc3c9fd8 Mon Sep 17 00:00:00 2001 From: Las Zenow Date: Wed, 19 Feb 2014 01:20:10 +0100 Subject: [PATCH] Clean up visit updater --- database.go | 12 +++++----- db_stats.go | 65 ++++++++++++++++------------------------------------- 2 files changed, 25 insertions(+), 52 deletions(-) diff --git a/database.go b/database.go index 8f2beb5..bb0bbed 100644 --- a/database.go +++ b/database.go @@ -300,40 +300,40 @@ func (d *DB) UpdateHourVisits() error { var u DBUpdate u.src = d.session.DB(DB_NAME).C(STATS_COLL) u.dst = d.session.DB(DB_NAME).C(HOURLY_VISITS_COLL) - return u.UpdateHourVisits() + return u.UpdateHourVisits(false) } func (d *DB) UpdateDayVisits() error { var u DBUpdate u.src = d.session.DB(DB_NAME).C(STATS_COLL) u.dst = d.session.DB(DB_NAME).C(DAILY_VISITS_COLL) - return u.UpdateDayVisits() + return u.UpdateDayVisits(false) } func (d *DB) UpdateMonthVisits() error { var u DBUpdate u.src = d.session.DB(DB_NAME).C(STATS_COLL) u.dst = d.session.DB(DB_NAME).C(MONTHLY_VISITS_COLL) - return u.UpdateMonthVisits() + return u.UpdateMonthVisits(false) } func (d *DB) UpdateHourDownloads() error { var u DBUpdate u.src = d.session.DB(DB_NAME).C(STATS_COLL) u.dst = d.session.DB(DB_NAME).C(HOURLY_DOWNLOADS_COLL) - return u.UpdateHourDownloads() + return u.UpdateHourVisits(true) } func (d *DB) UpdateDayDownloads() error { var u DBUpdate u.src = d.session.DB(DB_NAME).C(STATS_COLL) u.dst = d.session.DB(DB_NAME).C(DAILY_DOWNLOADS_COLL) - return u.UpdateDayDownloads() + return u.UpdateDayVisits(true) } func (d *DB) UpdateMonthDownloads() error { var u DBUpdate u.src = d.session.DB(DB_NAME).C(STATS_COLL) u.dst = d.session.DB(DB_NAME).C(MONTHLY_DOWNLOADS_COLL) - return u.UpdateMonthDownloads() + return u.UpdateMonthVisits(true) } diff --git a/db_stats.go b/db_stats.go index 1394e81..986cdf6 100644 --- a/db_stats.go +++ b/db_stats.go @@ -104,77 +104,50 @@ func (u *DBUpdate) UpdateMostBooks(section string) error { return nil } -func (u *DBUpdate) UpdateHourVisits() error { - f := func(t time.Time) time.Time { - const span = time.Hour - return t.Add(span).Truncate(span) - } +func (u *DBUpdate) UpdateHourVisits(isDownloads bool) error { const numDays = 2 spanStore := numDays * 24 * time.Hour - return u.updateVisits(f, spanStore, HOURLY_VISITS_COLL, true) + return u.updateVisits(hourInc, spanStore, isDownloads) } -func (u *DBUpdate) UpdateDayVisits() error { - f := func(t time.Time) time.Time { - const span = 24 * time.Hour - return t.Add(span).Truncate(span) - } +func (u *DBUpdate) UpdateDayVisits(isDownloads bool) error { const numDays = 30 spanStore := numDays * 24 * time.Hour - return u.updateVisits(f, spanStore, DAILY_VISITS_COLL, true) + return u.updateVisits(dayInc, spanStore, isDownloads) } -func (u *DBUpdate) UpdateMonthVisits() error { - f := func(t time.Time) time.Time { - const span = 24 * time.Hour - return t.AddDate(0, 1, 1-t.Day()).Truncate(span) - } +func (u *DBUpdate) UpdateMonthVisits(isDownloads bool) error { const numDays = 365 spanStore := numDays * 24 * time.Hour - return u.updateVisits(f, spanStore, MONTHLY_VISITS_COLL, true) + return u.updateVisits(monthInc, spanStore, isDownloads) } -func (u *DBUpdate) UpdateHourDownloads() error { - f := func(t time.Time) time.Time { - const span = time.Hour - return t.Add(span).Truncate(span) - } - const numDays = 2 - spanStore := numDays * 24 * time.Hour - return u.updateVisits(f, spanStore, HOURLY_DOWNLOADS_COLL, false) +func hourInc(date time.Time) time.Time { + const span = time.Hour + return date.Add(span).Truncate(span) } -func (u *DBUpdate) UpdateDayDownloads() error { - f := func(t time.Time) time.Time { - const span = 24 * time.Hour - return t.Add(span).Truncate(span) - } - const numDays = 30 - spanStore := numDays * 24 * time.Hour - return u.updateVisits(f, spanStore, DAILY_DOWNLOADS_COLL, false) +func dayInc(date time.Time) time.Time { + const span = 24 * time.Hour + return date.Add(span).Truncate(span) } -func (u *DBUpdate) UpdateMonthDownloads() error { - f := func(t time.Time) time.Time { - const span = 24 * time.Hour - return t.AddDate(0, 1, 1-t.Day()).Truncate(span) - } - const numDays = 365 - spanStore := numDays * 24 * time.Hour - return u.updateVisits(f, spanStore, MONTHLY_DOWNLOADS_COLL, false) +func monthInc(date time.Time) time.Time { + const span = 24 * time.Hour + return date.AddDate(0, 1, 1-date.Day()).Truncate(span) } -func (u *DBUpdate) updateVisits(incTime func(time.Time) time.Time, spanStore time.Duration, coll string, useSession bool) error { +func (u *DBUpdate) updateVisits(incTime func(time.Time) time.Time, spanStore time.Duration, isDownloads bool) error { start := u.calculateStart(spanStore) for start.Before(time.Now().UTC()) { stop := incTime(start) var count int var err error - if useSession { - count = u.countVisits(start, stop) - } else { + if isDownloads { count, err = u.countDownloads(start, stop) + } else { + count = u.countVisits(start, stop) } if err != nil { return err