Remove statistics and add frequent tags in memory

This commit is contained in:
Las Zenow 2016-09-03 15:08:10 -04:00
parent 284b649b69
commit 18baa2938b
10 changed files with 35 additions and 256 deletions

View file

@ -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{}

View file

@ -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

View file

@ -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")
}

View file

@ -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)
}
}