61 lines
1 KiB
Go
61 lines
1 KiB
Go
package main
|
|
|
|
import (
|
|
"labix.org/v2/mgo"
|
|
"labix.org/v2/mgo/bson"
|
|
)
|
|
|
|
type Book struct {
|
|
Id string `bson:"_id"`
|
|
Title string
|
|
Author []string
|
|
Contributor string
|
|
Publisher string
|
|
Description string
|
|
Subject []string
|
|
Date string
|
|
Lang []string
|
|
Type string
|
|
Format string
|
|
Source string
|
|
Relation string
|
|
Coverage string
|
|
Rights string
|
|
Meta string
|
|
Path string
|
|
Cover string
|
|
CoverSmall string
|
|
Keywords []string
|
|
}
|
|
|
|
/* optional parameters: length and start index
|
|
*
|
|
* Returns: list of books, number found and err
|
|
*/
|
|
func GetBook(coll *mgo.Collection, query bson.M, r ...int) (books []Book, num int, err error) {
|
|
var start, length int
|
|
if len(r) > 0 {
|
|
length = r[0]
|
|
if len(r) > 1 {
|
|
start = r[1]
|
|
}
|
|
}
|
|
q := coll.Find(query)
|
|
num, err = q.Count()
|
|
if err != nil {
|
|
return
|
|
}
|
|
if start != 0 {
|
|
q = q.Skip(start)
|
|
}
|
|
if length != 0 {
|
|
q = q.Limit(length)
|
|
}
|
|
|
|
err = q.All(&books)
|
|
for i, b := range books {
|
|
books[i].Id = bson.ObjectId(b.Id).Hex()
|
|
}
|
|
return
|
|
|
|
}
|