Skip to content

Commit d53c096

Browse files
committed
updated
1 parent a70ac49 commit d53c096

File tree

7 files changed

+46
-6
lines changed

7 files changed

+46
-6
lines changed

controllers/auth.controller.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package controllers
33
import (
44
"fmt"
55
"net/http"
6+
"time"
67

78
"github.com/gin-gonic/gin"
89
"github.com/wpcodevo/golang-mongodb/config"
@@ -151,6 +152,23 @@ func (ac *AuthController) GoogleOAuth(ctx *gin.Context) {
151152
ctx.JSON(http.StatusBadGateway, gin.H{"status": "fail", "message": err.Error()})
152153
}
153154

155+
createdAt := time.Now()
156+
resBody := &models.UpdateDBUser{
157+
Email: user.Email,
158+
Name: user.Name,
159+
Photo: user.Picture,
160+
Provider: "google",
161+
Role: "user",
162+
Verified: true,
163+
CreatedAt: createdAt,
164+
UpdatedAt: createdAt,
165+
}
166+
167+
_, err = ac.userService.UpsertUser(user.Email, resBody)
168+
if err != nil {
169+
ctx.JSON(http.StatusBadGateway, gin.H{"status": "fail", "message": err.Error()})
170+
}
171+
154172
fmt.Println(user.Email)
155173

156174
config, _ := config.LoadConfig(".")

models/user.model.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ 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"`
15+
Provider string `json:"provider,omitempty" bson:"provider,omitempty"`
16+
Photo string `json:"photo,omitempty" bson:"photo,omitempty"`
1617
Verified bool `json:"verified" bson:"verified"`
1718
CreatedAt time.Time `json:"created_at" bson:"created_at"`
1819
UpdatedAt time.Time `json:"updated_at" bson:"updated_at"`
@@ -30,6 +31,7 @@ type DBResponse struct {
3031
Password string `json:"password" bson:"password"`
3132
PasswordConfirm string `json:"passwordConfirm,omitempty" bson:"passwordConfirm,omitempty"`
3233
Provider string `json:"provider" bson:"provider"`
34+
Photo string `json:"photo,omitempty" bson:"photo,omitempty"`
3335
Role string `json:"role" bson:"role"`
3436
Verified bool `json:"verified" bson:"verified"`
3537
CreatedAt time.Time `json:"created_at" bson:"created_at"`
@@ -41,6 +43,7 @@ type UserResponse struct {
4143
Name string `json:"name,omitempty" bson:"name,omitempty"`
4244
Email string `json:"email,omitempty" bson:"email,omitempty"`
4345
Role string `json:"role,omitempty" bson:"role,omitempty"`
46+
Photo string `json:"photo,omitempty" bson:"photo,omitempty"`
4447
Provider string `json:"provider" bson:"provider"`
4548
CreatedAt time.Time `json:"created_at" bson:"created_at"`
4649
UpdatedAt time.Time `json:"updated_at" bson:"updated_at"`
@@ -54,6 +57,7 @@ type UpdateDBUser struct {
5457
PasswordConfirm string `json:"passwordConfirm,omitempty" bson:"passwordConfirm,omitempty"`
5558
Role string `json:"role,omitempty" bson:"role,omitempty"`
5659
Provider string `json:"provider" bson:"provider"`
60+
Photo string `json:"photo,omitempty" bson:"photo,omitempty"`
5761
Verified bool `json:"verified,omitempty" bson:"verified,omitempty"`
5862
CreatedAt time.Time `json:"created_at,omitempty" bson:"created_at,omitempty"`
5963
UpdatedAt time.Time `json:"updated_at,omitempty" bson:"updated_at,omitempty"`
@@ -66,6 +70,7 @@ func FilteredResponse(user *DBResponse) UserResponse {
6670
Name: user.Name,
6771
Role: user.Role,
6872
Provider: user.Provider,
73+
Photo: user.Photo,
6974
CreatedAt: user.CreatedAt,
7075
UpdatedAt: user.UpdatedAt,
7176
}

services/auth.service.impl.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ func (uc *AuthServiceImpl) SignUpUser(user *models.SignUpInput) (*models.DBRespo
2929
user.PasswordConfirm = ""
3030
user.Verified = true
3131
user.Role = "user"
32+
user.Photo = "default.png"
33+
user.Provider = "local"
3234

3335
hashedPassword, _ := utils.HashPassword(user.Password)
3436
user.Password = hashedPassword

services/user.service.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ import "github.com/wpcodevo/golang-mongodb/models"
55
type UserService interface {
66
FindUserById(string) (*models.DBResponse, error)
77
FindUserByEmail(string) (*models.DBResponse, error)
8+
UpsertUser(string, *models.UpdateDBUser) (*models.DBResponse, error)
89
}

services/user.service.impl.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"strings"
77

88
"github.com/wpcodevo/golang-mongodb/models"
9+
"github.com/wpcodevo/golang-mongodb/utils"
910
"go.mongodb.org/mongo-driver/bson"
1011
"go.mongodb.org/mongo-driver/bson/primitive"
1112
"go.mongodb.org/mongo-driver/mongo"
@@ -55,16 +56,16 @@ func (us *UserServiceImpl) FindUserByEmail(email string) (*models.DBResponse, er
5556
return user, nil
5657
}
5758

58-
func (uc *UserServiceImpl) UpdateUser(id string, data *models.UpdateDBUser) (*models.DBResponse, error) {
59+
func (uc *UserServiceImpl) UpsertUser(email string, data *models.UpdateDBUser) (*models.DBResponse, error) {
5960
doc, err := utils.ToDoc(data)
6061
if err != nil {
6162
return nil, err
6263
}
6364

64-
obId, _ := primitive.ObjectIDFromHex(id)
65-
query := bson.D{{Key: "_id", Value: obId}}
65+
opts := options.FindOneAndUpdate().SetUpsert(true).SetReturnDocument(1)
66+
query := bson.D{{Key: "email", Value: email}}
6667
update := bson.D{{Key: "$set", Value: doc}}
67-
res := uc.collection.FindOneAndUpdate(uc.ctx, query, update, options.FindOneAndUpdate().SetReturnDocument(1))
68+
res := uc.collection.FindOneAndUpdate(uc.ctx, query, update, opts)
6869

6970
var updatedPost *models.DBResponse
7071

tmp/build-errors.log

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
exit status 2exit status 2exit status 2exit status 2
1+
exit status 2exit status 2exit status 2exit status 2exit status 2

utils/helper.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package utils
2+
3+
import "go.mongodb.org/mongo-driver/bson"
4+
5+
func ToDoc(v interface{}) (doc *bson.D, err error) {
6+
data, err := bson.Marshal(v)
7+
if err != nil {
8+
return
9+
}
10+
11+
err = bson.Unmarshal(data, &doc)
12+
return
13+
}

0 commit comments

Comments
 (0)