Skip to content

Commit a70ac49

Browse files
committed
update
1 parent 79024d5 commit a70ac49

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

models/user.model.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ type SignUpInput struct {
1212
Password string `json:"password" bson:"password" binding:"required,min=8"`
1313
PasswordConfirm string `json:"passwordConfirm" bson:"passwordConfirm,omitempty" binding:"required"`
1414
Role string `json:"role" bson:"role"`
15+
Provider string `json:"provider" bson:"provider"`
1516
Verified bool `json:"verified" bson:"verified"`
1617
CreatedAt time.Time `json:"created_at" bson:"created_at"`
1718
UpdatedAt time.Time `json:"updated_at" bson:"updated_at"`
@@ -28,6 +29,7 @@ type DBResponse struct {
2829
Email string `json:"email" bson:"email"`
2930
Password string `json:"password" bson:"password"`
3031
PasswordConfirm string `json:"passwordConfirm,omitempty" bson:"passwordConfirm,omitempty"`
32+
Provider string `json:"provider" bson:"provider"`
3133
Role string `json:"role" bson:"role"`
3234
Verified bool `json:"verified" bson:"verified"`
3335
CreatedAt time.Time `json:"created_at" bson:"created_at"`
@@ -39,16 +41,31 @@ type UserResponse struct {
3941
Name string `json:"name,omitempty" bson:"name,omitempty"`
4042
Email string `json:"email,omitempty" bson:"email,omitempty"`
4143
Role string `json:"role,omitempty" bson:"role,omitempty"`
44+
Provider string `json:"provider" bson:"provider"`
4245
CreatedAt time.Time `json:"created_at" bson:"created_at"`
4346
UpdatedAt time.Time `json:"updated_at" bson:"updated_at"`
4447
}
4548

49+
type UpdateDBUser struct {
50+
ID primitive.ObjectID `json:"id,omitempty" bson:"_id,omitempty"`
51+
Name string `json:"name,omitempty" bson:"name,omitempty"`
52+
Email string `json:"email,omitempty" bson:"email,omitempty"`
53+
Password string `json:"password,omitempty" bson:"password,omitempty"`
54+
PasswordConfirm string `json:"passwordConfirm,omitempty" bson:"passwordConfirm,omitempty"`
55+
Role string `json:"role,omitempty" bson:"role,omitempty"`
56+
Provider string `json:"provider" bson:"provider"`
57+
Verified bool `json:"verified,omitempty" bson:"verified,omitempty"`
58+
CreatedAt time.Time `json:"created_at,omitempty" bson:"created_at,omitempty"`
59+
UpdatedAt time.Time `json:"updated_at,omitempty" bson:"updated_at,omitempty"`
60+
}
61+
4662
func FilteredResponse(user *DBResponse) UserResponse {
4763
return UserResponse{
4864
ID: user.ID,
4965
Email: user.Email,
5066
Name: user.Name,
5167
Role: user.Role,
68+
Provider: user.Provider,
5269
CreatedAt: user.CreatedAt,
5370
UpdatedAt: user.UpdatedAt,
5471
}

services/user.service.impl.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ package services
22

33
import (
44
"context"
5+
"errors"
56
"strings"
67

78
"github.com/wpcodevo/golang-mongodb/models"
89
"go.mongodb.org/mongo-driver/bson"
910
"go.mongodb.org/mongo-driver/bson/primitive"
1011
"go.mongodb.org/mongo-driver/mongo"
12+
"go.mongodb.org/mongo-driver/mongo/options"
1113
)
1214

1315
type UserServiceImpl struct {
@@ -52,3 +54,23 @@ func (us *UserServiceImpl) FindUserByEmail(email string) (*models.DBResponse, er
5254

5355
return user, nil
5456
}
57+
58+
func (uc *UserServiceImpl) UpdateUser(id string, data *models.UpdateDBUser) (*models.DBResponse, error) {
59+
doc, err := utils.ToDoc(data)
60+
if err != nil {
61+
return nil, err
62+
}
63+
64+
obId, _ := primitive.ObjectIDFromHex(id)
65+
query := bson.D{{Key: "_id", Value: obId}}
66+
update := bson.D{{Key: "$set", Value: doc}}
67+
res := uc.collection.FindOneAndUpdate(uc.ctx, query, update, options.FindOneAndUpdate().SetReturnDocument(1))
68+
69+
var updatedPost *models.DBResponse
70+
71+
if err := res.Decode(&updatedPost); err != nil {
72+
return nil, errors.New("no post with that Id exists")
73+
}
74+
75+
return updatedPost, nil
76+
}

0 commit comments

Comments
 (0)