feat: update news

This commit is contained in:
ericprd
2025-03-06 23:55:46 +08:00
parent 2046021e01
commit e3a9b67e28
17 changed files with 249 additions and 21 deletions
+2 -2
View File
@@ -2,14 +2,14 @@ package newssvc
import (
newsdomain "legalgo-BE-go/internal/domain/news"
"strings"
"legalgo-BE-go/internal/utilities/utils"
"time"
"github.com/google/uuid"
)
func (i *impl) Create(spec newsdomain.NewsReq, staffId string) error {
slug := strings.ToLower(strings.ReplaceAll(spec.Title, " ", "-"))
slug := utils.TitleToSlug(spec.Title)
tags, err := i.tagRepo.GetByIDs(spec.Tags)
if err != nil {
+5
View File
@@ -4,6 +4,7 @@ import (
categoryrepository "legalgo-BE-go/internal/accessor/category"
newsrepository "legalgo-BE-go/internal/accessor/news"
tagrepository "legalgo-BE-go/internal/accessor/tag"
userrepository "legalgo-BE-go/internal/accessor/user_repository"
newsdomain "legalgo-BE-go/internal/domain/news"
)
@@ -11,12 +12,14 @@ type impl struct {
newsRepo newsrepository.News
tagRepo tagrepository.TagAccessor
categoryRepo categoryrepository.Category
userRepo userrepository.User
}
type News interface {
GetAll() ([]newsdomain.News, error)
GetBySlug(string) (*newsdomain.News, error)
Create(newsdomain.NewsReq, string) error
Update(string, newsdomain.NewsUpdate) error
Delete(string) error
}
@@ -24,10 +27,12 @@ func New(
newsRepo newsrepository.News,
tagRepo tagrepository.TagAccessor,
categoryRepo categoryrepository.Category,
userRepo userrepository.User,
) News {
return &impl{
newsRepo,
tagRepo,
categoryRepo,
userRepo,
}
}
+39
View File
@@ -0,0 +1,39 @@
package newssvc
import (
newsdomain "legalgo-BE-go/internal/domain/news"
timeutils "legalgo-BE-go/internal/utilities/time_utils"
"legalgo-BE-go/internal/utilities/utils"
)
func (i *impl) Update(id string, spec newsdomain.NewsUpdate) error {
tags, err := i.tagRepo.GetByIDs(spec.Tags)
if err != nil {
return err
}
categories, err := i.categoryRepo.GetByIDs(spec.Categories)
if err != nil {
return err
}
newSpec := newsdomain.News{
ID: spec.ID,
AuthorID: id,
UpdatedAt: timeutils.Now(),
Slug: utils.TitleToSlug(spec.Title),
LiveAt: spec.LiveAt,
Title: spec.Title,
IsPremium: spec.IsPremium,
Content: spec.Content,
FeaturedImage: spec.FeaturedImage,
Tags: tags,
Categories: categories,
}
if err := i.newsRepo.Update(newSpec); err != nil {
return err
}
return nil
}