feat: update advertisement

This commit is contained in:
hanif salafi 2025-04-14 16:00:08 +07:00
parent f4c353151e
commit cd5bfded3c
4 changed files with 52 additions and 7 deletions

View File

@ -11,7 +11,7 @@ type Advertisement struct {
ContentFileName *string `json:"content_file_name" gorm:"type:varchar"` ContentFileName *string `json:"content_file_name" gorm:"type:varchar"`
Placement string `json:"placement" gorm:"type:varchar"` Placement string `json:"placement" gorm:"type:varchar"`
StatusId int `json:"status_id" gorm:"type:int4"` 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"` IsActive bool `json:"is_active" gorm:"type:bool;default:true"`
CreatedAt time.Time `json:"created_at" gorm:"default:now()"` CreatedAt time.Time `json:"created_at" gorm:"default:now()"`
UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"` UpdatedAt time.Time `json:"updated_at" gorm:"default:now()"`

View File

@ -21,7 +21,7 @@ type AdvertisementRepository interface {
FindOne(id uint) (advertisement *entity.Advertisement, err error) FindOne(id uint) (advertisement *entity.Advertisement, err error)
FindByFilename(contentFilename string) (advertisement *entity.Advertisement, err error) FindByFilename(contentFilename string) (advertisement *entity.Advertisement, err error)
Create(advertisement *entity.Advertisement) (advertisementReturn *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) Delete(id uint) (err error)
} }
@ -103,7 +103,7 @@ func (_i *advertisementRepository) Create(advertisement *entity.Advertisement) (
return advertisement, result.Error 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{}). return _i.DB.DB.Model(&entity.Advertisement{}).
Where(&entity.Advertisement{ID: id}). Where(&entity.Advertisement{ID: id}).
Updates(advertisement).Error Updates(advertisement).Error

View File

@ -15,6 +15,7 @@ import (
config "go-humas-be/config/config" config "go-humas-be/config/config"
minioStorage "go-humas-be/config/config" minioStorage "go-humas-be/config/config"
"go-humas-be/utils/paginator" "go-humas-be/utils/paginator"
utilSvc "go-humas-be/utils/service"
"io" "io"
"log" "log"
"math/rand" "math/rand"
@ -154,7 +155,11 @@ func (_i *advertisementService) Upload(c *fiber.Ctx, id uint) (err error) {
result.ContentFileName = &newFilename result.ContentFileName = &newFilename
result.ContentFilePath = &objectName 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 { if err != nil {
return err 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) { func (_i *advertisementService) Update(id uint, req request.AdvertisementUpdateRequest) (err error) {
_i.Log.Info().Interface("data", req).Msg("") _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) { 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) result, err := _i.Repo.FindOne(id)
if err != nil { if err != nil {
return err return err
@ -183,7 +199,15 @@ func (_i *advertisementService) UpdatePublish(id uint, isPublish bool) (err erro
result.IsPublish = isPublish 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 { func (_i *advertisementService) Delete(id uint) error {
@ -193,7 +217,12 @@ func (_i *advertisementService) Delete(id uint) error {
} }
result.IsActive = false 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) { func (_i *advertisementService) Viewer(c *fiber.Ctx) (err error) {

View File

@ -2,6 +2,7 @@ package service
import ( import (
"crypto/rand" "crypto/rand"
"encoding/json"
"math/big" "math/big"
"strings" "strings"
"unicode" "unicode"
@ -46,3 +47,18 @@ func GenerateNumericCode(codeLength int) (string, error) {
return string(result), nil 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
}