github.com/iron-io/functions@v0.0.0-20180820112432-d59d7d1c40b2/examples/blog/database/user.go (about) 1 package database 2 3 import ( 4 "github.com/iron-io/functions/examples/blog/models" 5 "gopkg.in/mgo.v2" 6 "gopkg.in/mgo.v2/bson" 7 ) 8 9 func (db *Database) SaveUser(user *models.User) (*models.User, error) { 10 s := db.Session.Copy() 11 defer s.Close() 12 13 c := s.DB("").C("user") 14 id := user.Username 15 user.Username = "" 16 17 if len(user.Password) > 0 { 18 user.Password = models.UserPasswordEncrypt(user.Password) 19 } 20 21 change := mgo.Change{ 22 Update: bson.M{"$set": user}, 23 ReturnNew: true, 24 Upsert: true, 25 } 26 27 _, err := c.Find(bson.M{"_id": id}).Apply(change, &user) 28 29 if err != nil { 30 return nil, err 31 } 32 33 return user, nil 34 } 35 36 func (db *Database) GetUser(id string) (*models.User, error) { 37 s := db.Session.Copy() 38 defer s.Close() 39 40 c := s.DB("").C("user") 41 42 var user models.User 43 44 err := c.Find(bson.M{"_id": id}).One(&user) 45 if err != nil { 46 return nil, err 47 } 48 49 return &user, nil 50 } 51 52 func (db *Database) GetUsers(query []bson.M) ([]*models.User, error) { 53 s := db.Session.Copy() 54 defer s.Close() 55 56 c := s.DB("").C("user") 57 58 var users []*models.User 59 60 err := c.Pipe(query).All(&users) 61 if err != nil { 62 return nil, err 63 } 64 return users, nil 65 }