github.com/justinjmoses/evergreen@v0.0.0-20170530173719-1d50e381ff0d/model/user/db.go (about)

     1  package user
     2  
     3  import (
     4  	"github.com/evergreen-ci/evergreen/db"
     5  	"github.com/evergreen-ci/evergreen/db/bsonutil"
     6  	"gopkg.in/mgo.v2"
     7  	"gopkg.in/mgo.v2/bson"
     8  )
     9  
    10  const (
    11  	Collection = "users"
    12  )
    13  
    14  var (
    15  	IdKey           = bsonutil.MustHaveTag(DBUser{}, "Id")
    16  	FirstNameKey    = bsonutil.MustHaveTag(DBUser{}, "FirstName")
    17  	LastNameKey     = bsonutil.MustHaveTag(DBUser{}, "LastName")
    18  	DispNameKey     = bsonutil.MustHaveTag(DBUser{}, "DispName")
    19  	EmailAddressKey = bsonutil.MustHaveTag(DBUser{}, "EmailAddress")
    20  	PatchNumberKey  = bsonutil.MustHaveTag(DBUser{}, "PatchNumber")
    21  	CreatedAtKey    = bsonutil.MustHaveTag(DBUser{}, "CreatedAt")
    22  	SettingsKey     = bsonutil.MustHaveTag(DBUser{}, "Settings")
    23  	APIKeyKey       = bsonutil.MustHaveTag(DBUser{}, "APIKey")
    24  	PubKeysKey      = bsonutil.MustHaveTag(DBUser{}, "PubKeys")
    25  )
    26  
    27  var (
    28  	PubKeyNameKey       = bsonutil.MustHaveTag(PubKey{}, "Name")
    29  	PubKeyKey           = bsonutil.MustHaveTag(PubKey{}, "Key")
    30  	PubKeyNCreatedAtKey = bsonutil.MustHaveTag(PubKey{}, "CreatedAt")
    31  )
    32  
    33  var (
    34  	SettingsTZKey = bsonutil.MustHaveTag(UserSettings{}, "Timezone")
    35  )
    36  
    37  func ById(userId string) db.Q {
    38  	return db.Query(bson.M{IdKey: userId})
    39  }
    40  
    41  func ByIds(userIds ...string) db.Q {
    42  	return db.Query(bson.M{
    43  		IdKey: bson.M{
    44  			"$in": userIds,
    45  		},
    46  	})
    47  }
    48  
    49  // FindOne gets one DBUser for the given query.
    50  func FindOne(query db.Q) (*DBUser, error) {
    51  	u := &DBUser{}
    52  	err := db.FindOneQ(Collection, query, u)
    53  	if err == mgo.ErrNotFound {
    54  		return nil, nil
    55  	}
    56  	return u, err
    57  }
    58  
    59  // Find gets all DBUser for the given query.
    60  func Find(query db.Q) ([]DBUser, error) {
    61  	us := []DBUser{}
    62  	err := db.FindAllQ(Collection, query, &us)
    63  	return us, err
    64  }
    65  
    66  // Count returns the number of user that satisfy the given query.
    67  func Count(query db.Q) (int, error) {
    68  	return db.CountQ(Collection, query)
    69  }
    70  
    71  // UpdateOne updates one user.
    72  func UpdateOne(query interface{}, update interface{}) error {
    73  	return db.Update(
    74  		Collection,
    75  		query,
    76  		update,
    77  	)
    78  }
    79  
    80  // UpdateAll updates all users.
    81  func UpdateAll(query interface{}, update interface{}) error {
    82  	_, err := db.UpdateAll(
    83  		Collection,
    84  		query,
    85  		update,
    86  	)
    87  	return err
    88  }
    89  
    90  // UpsertOne upserts a user.
    91  func UpsertOne(query interface{}, update interface{}) (*mgo.ChangeInfo, error) {
    92  	return db.Upsert(
    93  		Collection,
    94  		query,
    95  		update,
    96  	)
    97  }