From 1ae192ccef890a4961df7b0d551a3b447a537fd7 Mon Sep 17 00:00:00 2001 From: ericprd Date: Sun, 9 Mar 2025 00:55:40 +0800 Subject: [PATCH] feat: get all ads --- internal/accessor/ads/get-all.go | 15 +++++++++++++++ internal/accessor/ads/impl.go | 1 + internal/api/http/ads/get_all.go | 32 ++++++++++++++++++++++++++++++++ internal/api/http/ads/module.go | 1 + internal/services/ads/create.go | 2 +- internal/services/ads/get_all.go | 7 +++++++ internal/services/ads/impl.go | 7 ++++--- 7 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 internal/accessor/ads/get-all.go create mode 100644 internal/api/http/ads/get_all.go create mode 100644 internal/services/ads/get_all.go diff --git a/internal/accessor/ads/get-all.go b/internal/accessor/ads/get-all.go new file mode 100644 index 0000000..fd02b1e --- /dev/null +++ b/internal/accessor/ads/get-all.go @@ -0,0 +1,15 @@ +package adsrepository + +import ( + "fmt" + adsdomain "legalgo-BE-go/internal/domain/ads" +) + +func (a *accessor) GetAll() ([]adsdomain.Ads, error) { + var ads []adsdomain.Ads + if err := a.db.Find(&ads).Error; err != nil { + return ads, fmt.Errorf("failed to get all ads: %v", err) + } + + return ads, nil +} diff --git a/internal/accessor/ads/impl.go b/internal/accessor/ads/impl.go index 5f3689d..4b389c3 100644 --- a/internal/accessor/ads/impl.go +++ b/internal/accessor/ads/impl.go @@ -11,6 +11,7 @@ type accessor struct { type Ads interface { Create(adsdomain.Ads) error + GetAll() ([]adsdomain.Ads, error) } func New( diff --git a/internal/api/http/ads/get_all.go b/internal/api/http/ads/get_all.go new file mode 100644 index 0000000..6f5d4b8 --- /dev/null +++ b/internal/api/http/ads/get_all.go @@ -0,0 +1,32 @@ +package adshttp + +import ( + adssvc "legalgo-BE-go/internal/services/ads" + "legalgo-BE-go/internal/utilities/response" + "net/http" + + "github.com/go-chi/chi/v5" +) + +func GetAll( + router chi.Router, + adsSvc adssvc.Ads, +) { + router.Get("/ads", func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + subsPlan, err := adsSvc.GetAll() + if err != nil { + response.ResponseWithErrorCode( + ctx, + w, + err, + response.ErrBadRequest.Code, + response.ErrBadRequest.HttpCode, + err.Error(), + ) + return + } + + response.RespondJsonSuccess(ctx, w, subsPlan) + }) +} diff --git a/internal/api/http/ads/module.go b/internal/api/http/ads/module.go index bcd4d52..a77e17c 100644 --- a/internal/api/http/ads/module.go +++ b/internal/api/http/ads/module.go @@ -4,4 +4,5 @@ import "go.uber.org/fx" var Module = fx.Module("ads-http", fx.Invoke( Create, + GetAll, )) diff --git a/internal/services/ads/create.go b/internal/services/ads/create.go index 5d68cf9..de6ef30 100644 --- a/internal/services/ads/create.go +++ b/internal/services/ads/create.go @@ -45,7 +45,7 @@ func (i *impl) Create(ctx context.Context, spec adsdomain.AdsReq) error { Url: spec.Url, } - if err := i.ads.Create(newSpec); err != nil { + if err := i.adsRepo.Create(newSpec); err != nil { if err := i.ossRepo.DeleteObject(ctx, id); err != nil { return err } diff --git a/internal/services/ads/get_all.go b/internal/services/ads/get_all.go new file mode 100644 index 0000000..2647303 --- /dev/null +++ b/internal/services/ads/get_all.go @@ -0,0 +1,7 @@ +package adssvc + +import adsdomain "legalgo-BE-go/internal/domain/ads" + +func (i *impl) GetAll() ([]adsdomain.Ads, error) { + return i.adsRepo.GetAll() +} diff --git a/internal/services/ads/impl.go b/internal/services/ads/impl.go index 4222ada..ece22c8 100644 --- a/internal/services/ads/impl.go +++ b/internal/services/ads/impl.go @@ -11,22 +11,23 @@ import ( type impl struct { ossRepo oss.OSSRepository - ads adsrepository.Ads + adsRepo adsrepository.Ads validate *validator.Validate } type Ads interface { Create(context.Context, adsdomain.AdsReq) error + GetAll() ([]adsdomain.Ads, error) } func New( ossRepo oss.OSSRepository, - ads adsrepository.Ads, + adsRepo adsrepository.Ads, validate *validator.Validate, ) Ads { return &impl{ ossRepo, - ads, + adsRepo, validate, } }