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 }