Generate stats from visits and downloads
This commit is contained in:
parent
f3882881ce
commit
b96215b7ff
2 changed files with 18 additions and 3 deletions
12
database.go
12
database.go
|
@ -75,8 +75,16 @@ func (d *DB) RemoveBook(id bson.ObjectId) error {
|
||||||
return d.books.Remove(bson.M{"_id": id})
|
return d.books.Remove(bson.M{"_id": id})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DB) UpdateBook(id bson.ObjectId, book interface{}) error {
|
func (d *DB) UpdateBook(id bson.ObjectId, data interface{}) error {
|
||||||
return d.books.Update(bson.M{"_id": id}, bson.M{"$set": book})
|
return d.books.Update(bson.M{"_id": id}, bson.M{"$set": data})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *DB) IncVisit(id bson.ObjectId) error {
|
||||||
|
return d.books.Update(bson.M{"_id": id}, bson.M{"$inc": bson.M{"VisitsCount": 1}})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *DB) IncDownload(path string) error {
|
||||||
|
return d.books.Update(bson.M{"path": path}, bson.M{"$inc": bson.M{"DownloadCount": 1}})
|
||||||
}
|
}
|
||||||
|
|
||||||
/* optional parameters: length and start index
|
/* optional parameters: length and start index
|
||||||
|
|
|
@ -55,10 +55,17 @@ func bookHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
http.NotFound(w, r)
|
http.NotFound(w, r)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
db.IncVisit(id)
|
||||||
data.Book = books[0]
|
data.Book = books[0]
|
||||||
loadTemplate(w, "book", data)
|
loadTemplate(w, "book", data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func downloadHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
file := r.URL.Path[1:]
|
||||||
|
db.IncDownload(file)
|
||||||
|
http.ServeFile(w, r, file)
|
||||||
|
}
|
||||||
|
|
||||||
func fileHandler(path string) {
|
func fileHandler(path string) {
|
||||||
h := http.FileServer(http.Dir(path[1:]))
|
h := http.FileServer(http.Dir(path[1:]))
|
||||||
http.Handle(path, http.StripPrefix(path, h))
|
http.Handle(path, http.StripPrefix(path, h))
|
||||||
|
@ -131,9 +138,9 @@ func main() {
|
||||||
http.HandleFunc("/save/", saveHandler)
|
http.HandleFunc("/save/", saveHandler)
|
||||||
http.HandleFunc("/delete/", deleteHandler)
|
http.HandleFunc("/delete/", deleteHandler)
|
||||||
http.HandleFunc("/about/", aboutHandler)
|
http.HandleFunc("/about/", aboutHandler)
|
||||||
|
http.HandleFunc("/books/", downloadHandler)
|
||||||
fileHandler("/img/")
|
fileHandler("/img/")
|
||||||
fileHandler("/cover/")
|
fileHandler("/cover/")
|
||||||
fileHandler("/books/")
|
|
||||||
fileHandler("/css/")
|
fileHandler("/css/")
|
||||||
fileHandler("/js/")
|
fileHandler("/js/")
|
||||||
http.HandleFunc("/", indexHandler)
|
http.HandleFunc("/", indexHandler)
|
||||||
|
|
Reference in a new issue