From cd5bfded3c23e5d33833c61978d5146fc435f5b6 Mon Sep 17 00:00:00 2001 From: hanif salafi Date: Mon, 14 Apr 2025 16:00:08 +0700 Subject: [PATCH] feat: update advertisement --- app/database/entity/advertisement.entity.go | 2 +- .../repository/advertisement.repository.go | 4 +- .../service/advertisement.service.go | 37 +++++++++++++++++-- utils/service/string.service.go | 16 ++++++++ 4 files changed, 52 insertions(+), 7 deletions(-) diff --git a/app/database/entity/advertisement.entity.go b/app/database/entity/advertisement.entity.go index 4f497f4..387674e 100644 --- a/app/database/entity/advertisement.entity.go +++ b/app/database/entity/advertisement.entity.go @@ -11,7 +11,7 @@ type Advertisement struct { ContentFileName *string `json:"content_file_name" gorm:"type:varchar"` Placement string `json:"placement" gorm:"type:varchar"` StatusId int `json:"status_id" gorm:"type:int4"` - IsPublish bool `json:"is_publish" gorm:"type:bool;default:true"` + IsPublish bool `json:"is_publish" gorm:"type:bool"` IsActive bool `json:"is_active" gorm:"type:bool;default:true"` CreatedAt time.Time `json:"created_at" gorm:"default:now()"` UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"` diff --git a/app/module/advertisement/repository/advertisement.repository.go b/app/module/advertisement/repository/advertisement.repository.go index 81ea9e7..ef68d38 100644 --- a/app/module/advertisement/repository/advertisement.repository.go +++ b/app/module/advertisement/repository/advertisement.repository.go @@ -21,7 +21,7 @@ type AdvertisementRepository interface { FindOne(id uint) (advertisement *entity.Advertisement, err error) FindByFilename(contentFilename string) (advertisement *entity.Advertisement, err error) Create(advertisement *entity.Advertisement) (advertisementReturn *entity.Advertisement, err error) - Update(id uint, advertisement *entity.Advertisement) (err error) + Update(id uint, advertisement map[string]interface{}) (err error) Delete(id uint) (err error) } @@ -103,7 +103,7 @@ func (_i *advertisementRepository) Create(advertisement *entity.Advertisement) ( return advertisement, result.Error } -func (_i *advertisementRepository) Update(id uint, advertisement *entity.Advertisement) (err error) { +func (_i *advertisementRepository) Update(id uint, advertisement map[string]interface{}) (err error) { return _i.DB.DB.Model(&entity.Advertisement{}). Where(&entity.Advertisement{ID: id}). Updates(advertisement).Error diff --git a/app/module/advertisement/service/advertisement.service.go b/app/module/advertisement/service/advertisement.service.go index e0923b7..9a87222 100644 --- a/app/module/advertisement/service/advertisement.service.go +++ b/app/module/advertisement/service/advertisement.service.go @@ -15,6 +15,7 @@ import ( config "go-humas-be/config/config" minioStorage "go-humas-be/config/config" "go-humas-be/utils/paginator" + utilSvc "go-humas-be/utils/service" "io" "log" "math/rand" @@ -154,7 +155,11 @@ func (_i *advertisementService) Upload(c *fiber.Ctx, id uint) (err error) { result.ContentFileName = &newFilename result.ContentFilePath = &objectName - err = _i.Repo.Update(id, result) + resultMaps, err := utilSvc.StructToMap(result) + if err != nil { + return err + } + err = _i.Repo.Update(id, resultMaps) if err != nil { return err } @@ -172,10 +177,21 @@ func (_i *advertisementService) Upload(c *fiber.Ctx, id uint) (err error) { func (_i *advertisementService) Update(id uint, req request.AdvertisementUpdateRequest) (err error) { _i.Log.Info().Interface("data", req).Msg("") - return _i.Repo.Update(id, req.ToEntity()) + resultMaps, err := utilSvc.StructToMap(req.ToEntity()) + if err != nil { + return err + } + return _i.Repo.Update(id, resultMaps) } func (_i *advertisementService) UpdatePublish(id uint, isPublish bool) (err error) { + _i.Log.Info().Str("timestamp", time.Now(). + Format(time.RFC3339)).Str("Service:Resource", "UpdatePublish"). + Interface("ids", id).Msg("") + _i.Log.Info().Str("timestamp", time.Now(). + Format(time.RFC3339)).Str("Service:Resource", "UpdatePublish"). + Interface("isPublish", isPublish).Msg("") + result, err := _i.Repo.FindOne(id) if err != nil { return err @@ -183,7 +199,15 @@ func (_i *advertisementService) UpdatePublish(id uint, isPublish bool) (err erro result.IsPublish = isPublish - return _i.Repo.Update(id, result) + _i.Log.Info().Str("timestamp", time.Now(). + Format(time.RFC3339)).Str("Service:Resource", "UpdatePublish"). + Interface("result", result).Msg("") + + resultMaps, err := utilSvc.StructToMap(result) + if err != nil { + return err + } + return _i.Repo.Update(id, resultMaps) } func (_i *advertisementService) Delete(id uint) error { @@ -193,7 +217,12 @@ func (_i *advertisementService) Delete(id uint) error { } result.IsActive = false - return _i.Repo.Update(id, result) + + resultMaps, err := utilSvc.StructToMap(result) + if err != nil { + return err + } + return _i.Repo.Update(id, resultMaps) } func (_i *advertisementService) Viewer(c *fiber.Ctx) (err error) { diff --git a/utils/service/string.service.go b/utils/service/string.service.go index 73e4c4e..d753f93 100644 --- a/utils/service/string.service.go +++ b/utils/service/string.service.go @@ -2,6 +2,7 @@ package service import ( "crypto/rand" + "encoding/json" "math/big" "strings" "unicode" @@ -46,3 +47,18 @@ func GenerateNumericCode(codeLength int) (string, error) { return string(result), nil } + +func StructToMap(obj interface{}) (map[string]interface{}, error) { + var result map[string]interface{} + jsonData, err := json.Marshal(obj) + if err != nil { + return nil, err + } + + err = json.Unmarshal(jsonData, &result) + if err != nil { + return nil, err + } + + return result, nil +}