package models import ( "pro2d/components/db" ) type ModelBaseMgo struct { MonGo *db.MgoPool pri interface{} schema interface{} } func NewModelBaseMgo(mgo *db.Database, collection string, pri interface{}, schema interface{}) *ModelBaseMgo{ return &ModelBaseMgo{ MonGo: db.NewMongoPool(mgo, collection), pri: pri, schema: schema, } } func (base *ModelBaseMgo) Load() error{ r := base.MonGo.FindOne(base.pri) err := r.Decode(base.schema) if err != nil { return err } return nil } func (base *ModelBaseMgo) Create() { base.MonGo.InsertOne(base.schema) } func (base *ModelBaseMgo) Index(key string) { base.MonGo.Index(key) } func (base *ModelBaseMgo) Update(update interface{}) { base.MonGo.FindOneAndUpdate(base.pri, update) } func (base *ModelBaseMgo) Save() { base.MonGo.FindOneAndUpdate(base.pri, base.schema) }