This repository has been archived on 2025-03-01. You can view files and clone it, but cannot push or open issues or pull requests.
trantor/lib/database/database.go

65 lines
1.5 KiB
Go
Raw Normal View History

2014-06-29 19:41:29 -05:00
package database
import (
2014-08-30 13:17:50 -05:00
log "github.com/cihub/seelog"
"os"
2014-08-18 19:27:53 -05:00
"gopkg.in/mgo.v2"
2014-06-29 19:41:29 -05:00
)
2017-05-21 10:16:16 +00:00
type DB interface {
Close()
Copy() DB
AddBook(book map[string]interface{}) error
GetBooks(query string, length int, start int) (books []Book, num int, err error)
GetBooksIter() Iter
GetNewBooks(query string, length int, start int) (books []Book, num int, err error)
GetBookId(id string) (Book, error)
DeleteBook(id string) error
UpdateBook(id string, data map[string]interface{}) error
FlagBadQuality(id string, user string) error
ActiveBook(id string) error
IsBookActive(id string) bool
User(name string) *User
AddUser(name string, pass string) error
AddNews(text string) error
GetNews(num int, days int) (news []News, 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
2014-06-29 19:41:29 -05:00
}
2015-04-21 21:52:34 -04:00
type Iter interface {
Close() error
Next(interface{}) bool
}
2017-05-21 10:16:16 +00:00
func Init(host string, name string) DB {
2014-06-29 19:41:29 -05:00
var err error
2017-05-21 10:16:16 +00:00
db := new(mgoDB)
2014-06-29 19:41:29 -05:00
db.session, err = mgo.Dial(host)
if err != nil {
log.Critical(err)
os.Exit(1)
}
db.name = name
2014-08-31 15:09:59 -05:00
db.initIndexes()
2014-06-29 19:41:29 -05:00
return db
}
2017-05-21 10:16:16 +00:00
func RO(db DB) DB {
return &roDB{db}
2014-06-29 19:41:29 -05:00
}