代码拉取完成,页面将自动刷新
package storage
import (
"log"
"time"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
// MgoStorage objects store and retrieve data using Mongo.
type MgoStorage struct {
// mongo collection where the cache will be stored
Collection *mgo.Collection
}
// New returns a new MgoStorage
func NewMgoStorage(collection *mgo.Collection) *MgoStorage {
return &MgoStorage{
Collection: collection,
}
}
func (self *MgoStorage) Get(key string) (resp []byte, ok bool) {
result := record{}
err := self.Collection.Find(bson.M{"key": key}).One(&result)
if err != nil {
return []byte{}, false
}
return result.Content, true
}
func (self *MgoStorage) Set(key string, content []byte) {
_, err := self.Collection.Upsert(bson.M{"key": key}, &record{
Created: time.Now(),
Updated: time.Now(),
Key: key,
Content: content,
})
if err != nil {
log.Printf("Can't insert record in mongo: %v\n", err)
return
}
return
}
func (self *MgoStorage) Delete(key string) {
err := self.Collection.Remove(bson.M{"key": key})
if err != nil {
log.Printf("Can't remove record: %s", err)
}
}
func (self *MgoStorage) Indexes() {
index := mgo.Index{
Key: []string{"key"},
Unique: true,
DropDups: true,
}
err := self.Collection.EnsureIndex(index)
if err != nil {
log.Printf("Can't ensure index: %s", err)
}
}
type record struct {
Created time.Time
Updated time.Time
Key string
Content []byte
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。