You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
864 B
41 lines
864 B
package changes
|
|
|
|
import (
|
|
"log"
|
|
"sync"
|
|
"time"
|
|
|
|
"git.aiterp.net/rpdata/api/internal/store"
|
|
"git.aiterp.net/rpdata/api/models"
|
|
"github.com/globalsign/mgo"
|
|
"github.com/globalsign/mgo/bson"
|
|
)
|
|
|
|
var collection *mgo.Collection
|
|
var submitMutex sync.Mutex
|
|
|
|
func list(query bson.M, limit int) ([]models.Change, error) {
|
|
changes := make([]models.Change, 0, 64)
|
|
err := collection.Find(query).Limit(limit).Sort("-date").All(&changes)
|
|
|
|
return changes, err
|
|
}
|
|
|
|
func init() {
|
|
store.HandleInit(func(db *mgo.Database) {
|
|
collection = db.C("common.changes")
|
|
|
|
collection.EnsureIndexKey("date")
|
|
collection.EnsureIndexKey("author")
|
|
collection.EnsureIndexKey("keys")
|
|
|
|
err := collection.EnsureIndex(mgo.Index{
|
|
Name: "expiry",
|
|
Key: []string{"date"},
|
|
ExpireAfter: time.Hour * 2400, // 100 days
|
|
})
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
})
|
|
}
|