Remove statistics and add frequent tags in memory
This commit is contained in:
parent
284b649b69
commit
18baa2938b
10 changed files with 35 additions and 256 deletions
|
@ -24,8 +24,6 @@ type Book struct {
|
|||
Tsv string
|
||||
}
|
||||
|
||||
// TODO: missing history
|
||||
|
||||
// AddBook to the database
|
||||
func (db *pgDB) AddBook(book Book) error {
|
||||
emptyTime := time.Time{}
|
||||
|
|
|
@ -22,22 +22,17 @@ type DB interface {
|
|||
GetNews(num int, days int) (news []New, err error)
|
||||
AddStats(stats interface{}) error
|
||||
GetVisitedBooks() (books []Book, err error)
|
||||
UpdateMostVisited() error
|
||||
GetDownloadedBooks() (books []Book, err error)
|
||||
UpdateDownloadedBooks() error
|
||||
GetTags() ([]string, error)
|
||||
UpdateTags() error
|
||||
GetVisits(visitType VisitType) ([]Visits, error)
|
||||
UpdateHourVisits() error
|
||||
UpdateDayVisits() error
|
||||
UpdateMonthVisits() error
|
||||
UpdateHourDownloads() error
|
||||
UpdateDayDownloads() error
|
||||
UpdateMonthDownloads() error
|
||||
}
|
||||
|
||||
const (
|
||||
tagsDisplay = 50
|
||||
)
|
||||
|
||||
type pgDB struct {
|
||||
sql *pg.DB
|
||||
sql *pg.DB
|
||||
tags []string
|
||||
}
|
||||
|
||||
// Options for the database
|
||||
|
@ -57,7 +52,11 @@ func Init(options Options) (DB, error) {
|
|||
Database: options.Name,
|
||||
})
|
||||
// TODO: create db
|
||||
return &pgDB{sql}, nil
|
||||
|
||||
db := pgDB{sql, []string{}}
|
||||
go db.tagUpdater()
|
||||
|
||||
return &db, nil
|
||||
}
|
||||
|
||||
// Close the database connection
|
||||
|
|
|
@ -76,50 +76,10 @@ func (db *roDB) GetVisitedBooks() (books []Book, err error) {
|
|||
return db.db.GetVisitedBooks()
|
||||
}
|
||||
|
||||
func (db *roDB) UpdateMostVisited() error {
|
||||
return errors.New("RO database")
|
||||
}
|
||||
|
||||
func (db *roDB) GetDownloadedBooks() (books []Book, err error) {
|
||||
return db.db.GetDownloadedBooks()
|
||||
}
|
||||
|
||||
func (db *roDB) UpdateDownloadedBooks() error {
|
||||
return errors.New("RO database")
|
||||
}
|
||||
|
||||
func (db *roDB) GetTags() ([]string, error) {
|
||||
return db.db.GetTags()
|
||||
}
|
||||
|
||||
func (db *roDB) UpdateTags() error {
|
||||
return errors.New("RO database")
|
||||
}
|
||||
|
||||
func (db *roDB) GetVisits(visitType VisitType) ([]Visits, error) {
|
||||
return db.db.GetVisits(visitType)
|
||||
}
|
||||
|
||||
func (db *roDB) UpdateHourVisits() error {
|
||||
return errors.New("RO database")
|
||||
}
|
||||
|
||||
func (db *roDB) UpdateDayVisits() error {
|
||||
return errors.New("RO database")
|
||||
}
|
||||
|
||||
func (db *roDB) UpdateMonthVisits() error {
|
||||
return errors.New("RO database")
|
||||
}
|
||||
|
||||
func (db *roDB) UpdateHourDownloads() error {
|
||||
return errors.New("RO database")
|
||||
}
|
||||
|
||||
func (db *roDB) UpdateDayDownloads() error {
|
||||
return errors.New("RO database")
|
||||
}
|
||||
|
||||
func (db *roDB) UpdateMonthDownloads() error {
|
||||
return errors.New("RO database")
|
||||
}
|
||||
|
|
|
@ -3,24 +3,10 @@ package database
|
|||
|
||||
import (
|
||||
"time"
|
||||
|
||||
log "github.com/cihub/seelog"
|
||||
)
|
||||
|
||||
type VisitType int
|
||||
|
||||
const (
|
||||
Hourly_visits = iota
|
||||
Daily_visits
|
||||
Monthly_visits
|
||||
Hourly_downloads
|
||||
Daily_downloads
|
||||
Monthly_downloads
|
||||
)
|
||||
|
||||
type Visits struct {
|
||||
Date time.Time "date"
|
||||
Count int "count"
|
||||
}
|
||||
|
||||
func (db *pgDB) AddStats(stats interface{}) error {
|
||||
return nil
|
||||
}
|
||||
|
@ -31,52 +17,34 @@ func (db *pgDB) GetVisitedBooks() (books []Book, err error) {
|
|||
return []Book{}, nil
|
||||
}
|
||||
|
||||
func (db *pgDB) UpdateMostVisited() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
/* Get the most downloaded books
|
||||
*/
|
||||
func (db *pgDB) GetDownloadedBooks() (books []Book, err error) {
|
||||
return []Book{}, nil
|
||||
}
|
||||
|
||||
func (db *pgDB) UpdateDownloadedBooks() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *pgDB) GetTags() ([]string, error) {
|
||||
return []string{}, nil
|
||||
return db.tags, nil
|
||||
}
|
||||
|
||||
func (db *pgDB) UpdateTags() error {
|
||||
return nil
|
||||
func (db *pgDB) updateTags() {
|
||||
err := db.sql.Model(&Book{}).
|
||||
ColumnExpr("unnest(tags) as tag").
|
||||
Where("active = true").
|
||||
Group("tag").
|
||||
Order("count(*) DESC").
|
||||
Limit(tagsDisplay).
|
||||
Select(&db.tags)
|
||||
if err != nil {
|
||||
log.Error("Error updating tags: ", err)
|
||||
}
|
||||
}
|
||||
|
||||
func (db *pgDB) GetVisits(visitType VisitType) ([]Visits, error) {
|
||||
return []Visits{}, nil
|
||||
}
|
||||
func (db *pgDB) tagUpdater() {
|
||||
periodicity := 57 * time.Minute
|
||||
|
||||
func (db *pgDB) UpdateHourVisits() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *pgDB) UpdateDayVisits() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *pgDB) UpdateMonthVisits() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *pgDB) UpdateHourDownloads() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *pgDB) UpdateDayDownloads() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *pgDB) UpdateMonthDownloads() error {
|
||||
return nil
|
||||
for true {
|
||||
db.updateTags()
|
||||
time.Sleep(periodicity)
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue