feat: delete ads
This commit is contained in:
parent
ef6b17a363
commit
52dfb7e0f2
26
internal/accessor/ads/delete.go
Normal file
26
internal/accessor/ads/delete.go
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
package adsrepository
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
adsdomain "legalgo-BE-go/internal/domain/ads"
|
||||||
|
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (a *accessor) Delete(id string) error {
|
||||||
|
var ads adsdomain.Ads
|
||||||
|
if err := a.db.First(&ads, "id = ?", id).Error; err != nil {
|
||||||
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
return fmt.Errorf("ads with id %s is not found", id)
|
||||||
|
|
||||||
|
}
|
||||||
|
return fmt.Errorf("failed to g ads %s : %v", id, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := a.db.Delete(&ads).Error; err != nil {
|
||||||
|
return fmt.Errorf("failed to delete ads %s : %v", id, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@ -12,6 +12,7 @@ type accessor struct {
|
|||||||
type Ads interface {
|
type Ads interface {
|
||||||
Create(adsdomain.Ads) error
|
Create(adsdomain.Ads) error
|
||||||
GetAll() ([]adsdomain.Ads, error)
|
GetAll() ([]adsdomain.Ads, error)
|
||||||
|
Delete(string) error
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(
|
func New(
|
||||||
|
|||||||
53
internal/api/http/ads/delete.go
Normal file
53
internal/api/http/ads/delete.go
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
package adshttp
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
authmiddleware "legalgo-BE-go/internal/api/http/middleware/auth"
|
||||||
|
adssvc "legalgo-BE-go/internal/services/ads"
|
||||||
|
"legalgo-BE-go/internal/utilities/response"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/go-chi/chi/v5"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Delete(
|
||||||
|
router chi.Router,
|
||||||
|
adsSvc adssvc.Ads,
|
||||||
|
) {
|
||||||
|
router.
|
||||||
|
With(authmiddleware.Authorize()).
|
||||||
|
Delete("/ads/{ads_id}/delete", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
ctx := r.Context()
|
||||||
|
adsID := chi.URLParam(r, "ads_id")
|
||||||
|
|
||||||
|
if adsID == "" {
|
||||||
|
response.RespondJsonErrorWithCode(
|
||||||
|
ctx,
|
||||||
|
w,
|
||||||
|
fmt.Errorf("ads id is not provided"),
|
||||||
|
response.ErrBadRequest.Code,
|
||||||
|
response.ErrBadRequest.HttpCode,
|
||||||
|
"ads id is not provided",
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := adsSvc.Delete(adsID); err != nil {
|
||||||
|
response.RespondJsonErrorWithCode(
|
||||||
|
ctx,
|
||||||
|
w,
|
||||||
|
err,
|
||||||
|
response.ErrBadRequest.Code,
|
||||||
|
response.ErrBadRequest.HttpCode,
|
||||||
|
err.Error(),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
response.RespondJsonSuccess(ctx, w, struct {
|
||||||
|
Message string
|
||||||
|
}{
|
||||||
|
Message: "ads has been deleted",
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
@ -5,4 +5,5 @@ import "go.uber.org/fx"
|
|||||||
var Module = fx.Module("ads-http", fx.Invoke(
|
var Module = fx.Module("ads-http", fx.Invoke(
|
||||||
Create,
|
Create,
|
||||||
GetAll,
|
GetAll,
|
||||||
|
Delete,
|
||||||
))
|
))
|
||||||
|
|||||||
5
internal/services/ads/delete.go
Normal file
5
internal/services/ads/delete.go
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
package adssvc
|
||||||
|
|
||||||
|
func (i *impl) Delete(id string) error {
|
||||||
|
return i.adsRepo.Delete(id)
|
||||||
|
}
|
||||||
@ -2,31 +2,23 @@ package adssvc
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
adsrepository "legalgo-BE-go/internal/accessor/ads"
|
adsrepository "legalgo-BE-go/internal/accessor/ads"
|
||||||
"legalgo-BE-go/internal/accessor/oss"
|
|
||||||
adsdomain "legalgo-BE-go/internal/domain/ads"
|
adsdomain "legalgo-BE-go/internal/domain/ads"
|
||||||
|
|
||||||
"github.com/go-playground/validator/v10"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type impl struct {
|
type impl struct {
|
||||||
ossRepo oss.OSSRepository
|
|
||||||
adsRepo adsrepository.Ads
|
adsRepo adsrepository.Ads
|
||||||
validate *validator.Validate
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Ads interface {
|
type Ads interface {
|
||||||
Create(adsdomain.AdsReq) error
|
Create(adsdomain.AdsReq) error
|
||||||
GetAll() ([]adsdomain.Ads, error)
|
GetAll() ([]adsdomain.Ads, error)
|
||||||
|
Delete(string) error
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(
|
func New(
|
||||||
ossRepo oss.OSSRepository,
|
|
||||||
adsRepo adsrepository.Ads,
|
adsRepo adsrepository.Ads,
|
||||||
validate *validator.Validate,
|
|
||||||
) Ads {
|
) Ads {
|
||||||
return &impl{
|
return &impl{
|
||||||
ossRepo,
|
|
||||||
adsRepo,
|
adsRepo,
|
||||||
validate,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user