From 7c7667efc478adddaa226f958b2cdada68fdd69c Mon Sep 17 00:00:00 2001 From: FahrianAfdholi Date: Sat, 24 Jun 2023 01:54:26 +0700 Subject: [PATCH] add go routines --- controllers/profile/UserDelete.go | 86 +++++++++++++++++------------- controllers/register/AuthGoogle.go | 67 ++++++++++++++--------- 2 files changed, 93 insertions(+), 60 deletions(-) diff --git a/controllers/profile/UserDelete.go b/controllers/profile/UserDelete.go index 32fee7a..2081547 100644 --- a/controllers/profile/UserDelete.go +++ b/controllers/profile/UserDelete.go @@ -7,6 +7,7 @@ import ( "github.com/models" "net/http" "os" + "sync" ) func UserDelete(c *gin.Context) { @@ -15,6 +16,7 @@ func UserDelete(c *gin.Context) { userDelete models.UserDescDB wallpaperCollections []models.WallpaperCollectionDB photoProfileDelete models.UserPhotoProfileDB + wg sync.WaitGroup ) userId, err := data.GetUserIdFromCookies(c) @@ -32,47 +34,29 @@ func UserDelete(c *gin.Context) { }) return } + wg.Add(3) - if _ = db.Table("user").Where("id = ?", userId).First(&userDelete); userDelete.Id == "" { - c.JSON(http.StatusBadRequest, gin.H{ - "status": "user not found", - }) - return - } - - if _ = db.Table("photo_profile").Where("user_id = ?", userId).First(&photoProfileDelete); photoProfileDelete.UserId == "" { - c.JSON(http.StatusBadRequest, gin.H{ - "status": "photo profile not found", - }) - return - } - - if photoProfileDelete.Path != "" { - if err := os.Remove(photoProfileDelete.Path); err != nil { + go func() { + defer wg.Done() + if _ = db.Table("user").Where("id = ?", userId).First(&userDelete); userDelete.Id == "" { c.JSON(http.StatusBadRequest, gin.H{ - "status": "path not found", + "status": "user not found", }) return } - } + }() - if err := db.Table("photo_profile").Delete(photoProfileDelete).Error; err != nil { - c.JSON(http.StatusInternalServerError, gin.H{ - "status": err.Error(), - }) - return - } - - if err := db.Table("wallpaper_collect").Where("user_id = ?", userId).Find(&wallpaperCollections).Error; err != nil { - c.JSON(http.StatusBadRequest, gin.H{ - "status": "wallpapers not found", - }) - return - } + go func() { + defer wg.Done() + if _ = db.Table("photo_profile").Where("user_id = ?", userId).First(&photoProfileDelete); photoProfileDelete.UserId == "" { + c.JSON(http.StatusBadRequest, gin.H{ + "status": "photo profile not found", + }) + return + } - if len(wallpaperCollections) != 0 { - for _, value := range wallpaperCollections { - if err := os.Remove(value.Path); err != nil { + if photoProfileDelete.Path != "" { + if err := os.Remove(photoProfileDelete.Path); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "status": "path not found", }) @@ -80,13 +64,43 @@ func UserDelete(c *gin.Context) { } } - if err := db.Table("wallpaper_collect").Delete(wallpaperCollections).Error; err != nil { + if err := db.Table("photo_profile").Delete(photoProfileDelete).Error; err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "status": err.Error(), }) return } - } + }() + + go func() { + defer wg.Done() + if err := db.Table("wallpaper_collect").Where("user_id = ?", userId).Find(&wallpaperCollections).Error; err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "status": "wallpapers not found", + }) + return + } + + if len(wallpaperCollections) != 0 { + for _, value := range wallpaperCollections { + if err := os.Remove(value.Path); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "status": "path not found", + }) + return + } + } + + if err := db.Table("wallpaper_collect").Delete(wallpaperCollections).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "status": err.Error(), + }) + return + } + } + }() + + wg.Wait() if err := db.Table("user").Delete(userDelete).Error; err != nil { c.JSON(http.StatusInternalServerError, gin.H{ diff --git a/controllers/register/AuthGoogle.go b/controllers/register/AuthGoogle.go index aa6555d..100d543 100644 --- a/controllers/register/AuthGoogle.go +++ b/controllers/register/AuthGoogle.go @@ -10,6 +10,7 @@ import ( "io" "net/http" "os" + "sync" "time" ) @@ -20,6 +21,7 @@ func CreateUserAuthGoogle(c *gin.Context) { justCheck models.UserDescDB userPhotoProfile models.UserPhotoProfileDB googleToken models.GoogleToken + wg sync.WaitGroup ) db, err := database.ConnectDB() @@ -94,32 +96,49 @@ func CreateUserAuthGoogle(c *gin.Context) { Path: "", } - if err := os.MkdirAll("././assets/"+userDesc.Id+"/wallpaper_collection", os.ModePerm); err != nil { - c.JSON(http.StatusBadRequest, gin.H{ - "status": err.Error(), - }) - return - } + wg.Add(4) - if err := os.MkdirAll(pathProfile, os.ModePerm); err != nil { - c.JSON(http.StatusBadRequest, gin.H{ - "status": err.Error(), - }) - return - } + go func() { + defer wg.Done() + if err := os.MkdirAll("././assets/"+userDesc.Id+"/wallpaper_collection", os.ModePerm); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "status": err.Error(), + }) + return + } + }() - if err := db.Table("user").Create(&userDesc).Error; err != nil { - c.JSON(http.StatusInternalServerError, gin.H{ - "status": err.Error(), - }) - return - } - if err := db.Table("photo_profile").Create(&userPhotoProfile).Error; err != nil { - c.JSON(http.StatusInternalServerError, gin.H{ - "status": err.Error(), - }) - return - } + go func() { + defer wg.Done() + if err := os.MkdirAll(pathProfile, os.ModePerm); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "status": err.Error(), + }) + return + } + }() + + go func() { + defer wg.Done() + if err := db.Table("user").Create(&userDesc).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "status": err.Error(), + }) + return + } + }() + + go func() { + defer wg.Done() + if err := db.Table("photo_profile").Create(&userPhotoProfile).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "status": err.Error(), + }) + return + } + }() + + wg.Wait() c.JSON(http.StatusOK, gin.H{ "status": "ok", })