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  }