/
user.go
67 lines (61 loc) · 2.01 KB
/
user.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package rmongo
import (
"github.com/open-xiv/su-back/pkg/model"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.uber.org/zap"
"time"
)
func InitUser(coll *mongo.Collection, user model.User) (primitive.ObjectID, error) {
user.ID = primitive.NewObjectID()
user.ServerRecord.Update = time.Now().Unix()
rst, err := coll.InsertOne(nil, user)
if err != nil {
zap.L().Debug("failed to insert user", zap.Error(err))
return primitive.NilObjectID, err
}
zap.L().Debug("new user inserted", zap.Any("id", rst.InsertedID))
return rst.InsertedID.(primitive.ObjectID), err
}
func PullUser(coll *mongo.Collection, id primitive.ObjectID) (model.User, error) {
var user model.User
err := coll.FindOne(nil, bson.M{"_id": id}).Decode(&user)
if err != nil {
zap.L().Debug("failed to find user", zap.Error(err))
return model.User{}, err
}
zap.L().Debug("user found", zap.Any("id", user.ID))
return user, err
}
func PushUser(coll *mongo.Collection, user model.User) (model.User, error) {
user.ServerRecord.Update = time.Now().Unix()
_, err := coll.ReplaceOne(nil, bson.M{"_id": user.ID}, user)
if err != nil {
zap.L().Debug("failed to update user", zap.Error(err))
return model.User{}, err
}
zap.L().Debug("user updated", zap.Any("id", user.ID))
return user, err
}
func RemoveUser(coll *mongo.Collection, id primitive.ObjectID) error {
_, err := coll.DeleteOne(nil, bson.M{"_id": id})
if err != nil {
zap.L().Debug("failed to delete user", zap.Error(err))
return err
}
zap.L().Debug("user deleted", zap.Any("id", id))
return err
}
func PatchUser(coll *mongo.Collection, id primitive.ObjectID, patch bson.M) error {
// update record (concat with patch)
patch["record.update"] = time.Now().Unix()
// update user
rst, err := coll.UpdateOne(nil, bson.M{"_id": id}, bson.M{"$set": patch})
if err != nil {
zap.L().Debug("failed to patch user", zap.Error(err))
return err
}
zap.L().Debug("user patched", zap.Any("id", id), zap.Any("rst", rst))
return err
}