Clean up visit updater

This commit is contained in:
Las Zenow 2014-02-19 01:20:10 +01:00
parent cdc25f1094
commit e67e23c050
2 changed files with 25 additions and 52 deletions

View file

@ -300,40 +300,40 @@ func (d *DB) UpdateHourVisits() error {
var u DBUpdate var u DBUpdate
u.src = d.session.DB(DB_NAME).C(STATS_COLL) u.src = d.session.DB(DB_NAME).C(STATS_COLL)
u.dst = d.session.DB(DB_NAME).C(HOURLY_VISITS_COLL) u.dst = d.session.DB(DB_NAME).C(HOURLY_VISITS_COLL)
return u.UpdateHourVisits() return u.UpdateHourVisits(false)
} }
func (d *DB) UpdateDayVisits() error { func (d *DB) UpdateDayVisits() error {
var u DBUpdate var u DBUpdate
u.src = d.session.DB(DB_NAME).C(STATS_COLL) u.src = d.session.DB(DB_NAME).C(STATS_COLL)
u.dst = d.session.DB(DB_NAME).C(DAILY_VISITS_COLL) u.dst = d.session.DB(DB_NAME).C(DAILY_VISITS_COLL)
return u.UpdateDayVisits() return u.UpdateDayVisits(false)
} }
func (d *DB) UpdateMonthVisits() error { func (d *DB) UpdateMonthVisits() error {
var u DBUpdate var u DBUpdate
u.src = d.session.DB(DB_NAME).C(STATS_COLL) u.src = d.session.DB(DB_NAME).C(STATS_COLL)
u.dst = d.session.DB(DB_NAME).C(MONTHLY_VISITS_COLL) u.dst = d.session.DB(DB_NAME).C(MONTHLY_VISITS_COLL)
return u.UpdateMonthVisits() return u.UpdateMonthVisits(false)
} }
func (d *DB) UpdateHourDownloads() error { func (d *DB) UpdateHourDownloads() error {
var u DBUpdate var u DBUpdate
u.src = d.session.DB(DB_NAME).C(STATS_COLL) u.src = d.session.DB(DB_NAME).C(STATS_COLL)
u.dst = d.session.DB(DB_NAME).C(HOURLY_DOWNLOADS_COLL) u.dst = d.session.DB(DB_NAME).C(HOURLY_DOWNLOADS_COLL)
return u.UpdateHourDownloads() return u.UpdateHourVisits(true)
} }
func (d *DB) UpdateDayDownloads() error { func (d *DB) UpdateDayDownloads() error {
var u DBUpdate var u DBUpdate
u.src = d.session.DB(DB_NAME).C(STATS_COLL) u.src = d.session.DB(DB_NAME).C(STATS_COLL)
u.dst = d.session.DB(DB_NAME).C(DAILY_DOWNLOADS_COLL) u.dst = d.session.DB(DB_NAME).C(DAILY_DOWNLOADS_COLL)
return u.UpdateDayDownloads() return u.UpdateDayVisits(true)
} }
func (d *DB) UpdateMonthDownloads() error { func (d *DB) UpdateMonthDownloads() error {
var u DBUpdate var u DBUpdate
u.src = d.session.DB(DB_NAME).C(STATS_COLL) u.src = d.session.DB(DB_NAME).C(STATS_COLL)
u.dst = d.session.DB(DB_NAME).C(MONTHLY_DOWNLOADS_COLL) u.dst = d.session.DB(DB_NAME).C(MONTHLY_DOWNLOADS_COLL)
return u.UpdateMonthDownloads() return u.UpdateMonthVisits(true)
} }

View file

@ -104,77 +104,50 @@ func (u *DBUpdate) UpdateMostBooks(section string) error {
return nil return nil
} }
func (u *DBUpdate) UpdateHourVisits() error { func (u *DBUpdate) UpdateHourVisits(isDownloads bool) error {
f := func(t time.Time) time.Time {
const span = time.Hour
return t.Add(span).Truncate(span)
}
const numDays = 2 const numDays = 2
spanStore := numDays * 24 * time.Hour 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 { func (u *DBUpdate) UpdateDayVisits(isDownloads bool) error {
f := func(t time.Time) time.Time {
const span = 24 * time.Hour
return t.Add(span).Truncate(span)
}
const numDays = 30 const numDays = 30
spanStore := numDays * 24 * time.Hour 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 { func (u *DBUpdate) UpdateMonthVisits(isDownloads bool) 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 const numDays = 365
spanStore := numDays * 24 * time.Hour 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 { func hourInc(date time.Time) time.Time {
f := func(t time.Time) time.Time { const span = time.Hour
const span = time.Hour return date.Add(span).Truncate(span)
return t.Add(span).Truncate(span)
}
const numDays = 2
spanStore := numDays * 24 * time.Hour
return u.updateVisits(f, spanStore, HOURLY_DOWNLOADS_COLL, false)
} }
func (u *DBUpdate) UpdateDayDownloads() error { func dayInc(date time.Time) time.Time {
f := func(t time.Time) time.Time { const span = 24 * time.Hour
const span = 24 * time.Hour return date.Add(span).Truncate(span)
return t.Add(span).Truncate(span)
}
const numDays = 30
spanStore := numDays * 24 * time.Hour
return u.updateVisits(f, spanStore, DAILY_DOWNLOADS_COLL, false)
} }
func (u *DBUpdate) UpdateMonthDownloads() error { func monthInc(date time.Time) time.Time {
f := func(t time.Time) time.Time { const span = 24 * time.Hour
const span = 24 * time.Hour return date.AddDate(0, 1, 1-date.Day()).Truncate(span)
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 (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) start := u.calculateStart(spanStore)
for start.Before(time.Now().UTC()) { for start.Before(time.Now().UTC()) {
stop := incTime(start) stop := incTime(start)
var count int var count int
var err error var err error
if useSession { if isDownloads {
count = u.countVisits(start, stop)
} else {
count, err = u.countDownloads(start, stop) count, err = u.countDownloads(start, stop)
} else {
count = u.countVisits(start, stop)
} }
if err != nil { if err != nil {
return err return err