fix: add clicked count on ads
This commit is contained in:
parent
c0dcdb77fa
commit
7b529ba46e
@ -5,9 +5,14 @@ import (
|
|||||||
adsdomain "legalgo-BE-go/internal/domain/ads"
|
adsdomain "legalgo-BE-go/internal/domain/ads"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (a *accessor) GetAll() ([]adsdomain.Ads, error) {
|
func (a *accessor) GetAll() ([]adsdomain.AdsResponse, error) {
|
||||||
var ads []adsdomain.Ads
|
var ads []adsdomain.AdsResponse
|
||||||
if err := a.db.Find(&ads).Error; err != nil {
|
|
||||||
|
if err := a.db.Table("ads").
|
||||||
|
Select("ads.*, COUNT(log_ads.ads_id) as clicked").
|
||||||
|
Joins("LEFT JOIN log_ads ON log_ads.ads_id = ads.id").
|
||||||
|
Group("ads.id").
|
||||||
|
Scan(&ads).Error; err != nil {
|
||||||
return ads, fmt.Errorf("failed to get all ads: %v", err)
|
return ads, fmt.Errorf("failed to get all ads: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ type accessor struct {
|
|||||||
|
|
||||||
type Ads interface {
|
type Ads interface {
|
||||||
Create(adsdomain.Ads) error
|
Create(adsdomain.Ads) error
|
||||||
GetAll() ([]adsdomain.Ads, error)
|
GetAll() ([]adsdomain.AdsResponse, error)
|
||||||
Update(adsdomain.Ads) error
|
Update(adsdomain.Ads) error
|
||||||
Delete(string) error
|
Delete(string) error
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,11 @@ type Ads struct {
|
|||||||
UpdatedAt time.Time `json:"updated_at"`
|
UpdatedAt time.Time `json:"updated_at"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type AdsResponse struct {
|
||||||
|
Ads
|
||||||
|
Clicked int64 `json:"clicked"`
|
||||||
|
}
|
||||||
|
|
||||||
type AdsReq struct {
|
type AdsReq struct {
|
||||||
Image string `json:"image" validate:"required"`
|
Image string `json:"image" validate:"required"`
|
||||||
URL string `json:"url" validate:"required"`
|
URL string `json:"url" validate:"required"`
|
||||||
|
|||||||
@ -2,6 +2,6 @@ package adssvc
|
|||||||
|
|
||||||
import adsdomain "legalgo-BE-go/internal/domain/ads"
|
import adsdomain "legalgo-BE-go/internal/domain/ads"
|
||||||
|
|
||||||
func (i *impl) GetAll() ([]adsdomain.Ads, error) {
|
func (i *impl) GetAll() ([]adsdomain.AdsResponse, error) {
|
||||||
return i.adsRepo.GetAll()
|
return i.adsRepo.GetAll()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,7 @@ type impl struct {
|
|||||||
|
|
||||||
type Ads interface {
|
type Ads interface {
|
||||||
Create(adsdomain.AdsReq) error
|
Create(adsdomain.AdsReq) error
|
||||||
GetAll() ([]adsdomain.Ads, error)
|
GetAll() ([]adsdomain.AdsResponse, error)
|
||||||
Update(string, adsdomain.AdsReq) error
|
Update(string, adsdomain.AdsReq) error
|
||||||
Delete(string) error
|
Delete(string) error
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user