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