/
User.go
60 lines (52 loc) · 1.45 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
package database
import (
"context"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
)
type User struct {
Email string `json:"email" bson:"email"`
Tag string `json:"tag" bson:"tag"`
Subscribe bool `json:"subscribe" bson:"subscribe"`
}
func (user *User) CollectionName() string {
return "User"
}
func InsertUserDetail(user *User, ctx context.Context) (err error) {
if _, err = DB.Collection(user.CollectionName()).InsertOne(ctx, user); err != nil {
return err
}
return
}
func CheckUserEmail(email string, ctx context.Context) (err error, exist bool) {
var user *User
if err = DB.Collection(user.CollectionName()).FindOne(ctx, bson.M{"email": email}).Decode(&user); err != nil {
return err, false
}
return nil, true
}
func GetAllUserEmails(allUsers *[]User, ctx context.Context) (err error) {
var user User
findOptions := options.Find()
cur, err := DB.Collection(user.CollectionName()).Find(ctx, bson.M{"subscribe": true}, findOptions)
if err != nil {
return err
}
defer cur.Close(ctx)
for cur.Next(ctx) {
var value User
if err := cur.Decode(&value); err != nil {
return err
}
*allUsers = append(*allUsers, value)
}
return
}
func UnsubscribeEmailWithEmailId(email string, updateData map[string]interface{}, ctx context.Context) (err error) {
var user User
_, err = DB.Collection(user.CollectionName()).UpdateOne(ctx, bson.M{"email": email}, updateData)
if err != nil {
return err
}
return
}