// TODO package database import ( "time" log "github.com/cihub/seelog" ) func (db *pgDB) AddStats(stats interface{}) error { return nil } /* Get the most visited books */ func (db *pgDB) GetVisitedBooks() (books []Book, err error) { return []Book{}, nil } /* Get the most downloaded books */ func (db *pgDB) GetDownloadedBooks() (books []Book, err error) { return []Book{}, nil } func (db *pgDB) GetTags() ([]string, error) { return db.tags, nil } func (db *pgDB) updateTags() { var tags []string err := db.sql.Model(&Book{}). ColumnExpr("unnest(tags) as tag"). Where("active = true"). Group("tag"). Order("count(*) DESC"). Limit(tagsDisplay). Select(&tags) if err != nil { log.Error("Error updating tags: ", err) } else { db.tags = tags } } func (db *pgDB) tagUpdater() { periodicity := 57 * time.Minute for true { db.updateTags() time.Sleep(periodicity) } }