Clean up visit updater
This commit is contained in:
parent
cdc25f1094
commit
e67e23c050
2 changed files with 25 additions and 52 deletions
12
database.go
12
database.go
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
65
db_stats.go
65
db_stats.go
|
@ -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
|
||||||
|
|
Reference in a new issue