feat: news router
This commit is contained in:
@@ -3,5 +3,6 @@ package categorysvc
|
||||
import categorydomain "legalgo-BE-go/internal/domain/category"
|
||||
|
||||
func (i *impl) Create(spec categorydomain.CategoryReq) error {
|
||||
return i.categoryRepo.Create(spec)
|
||||
return i.categoryRepo.CreateModel(spec)
|
||||
// return i.categoryRepo.Create(spec)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package categorysvc
|
||||
|
||||
import (
|
||||
"legalgo-BE-go/database"
|
||||
)
|
||||
|
||||
func (i *impl) GetAllModel() ([]database.CategoryModel, error) {
|
||||
return i.categoryRepo.GetAllModel()
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package categorysvc
|
||||
|
||||
import (
|
||||
"legalgo-BE-go/database"
|
||||
categoryrepository "legalgo-BE-go/internal/accessor/category"
|
||||
categorydomain "legalgo-BE-go/internal/domain/category"
|
||||
)
|
||||
@@ -12,6 +13,7 @@ type impl struct {
|
||||
type Category interface {
|
||||
Create(categorydomain.CategoryReq) error
|
||||
GetAll() ([]categorydomain.Category, error)
|
||||
GetAllModel() ([]database.CategoryModel, error)
|
||||
}
|
||||
|
||||
func New(
|
||||
|
||||
@@ -3,6 +3,7 @@ package services
|
||||
import (
|
||||
serviceauth "legalgo-BE-go/internal/services/auth"
|
||||
categorysvc "legalgo-BE-go/internal/services/category"
|
||||
newssvc "legalgo-BE-go/internal/services/news"
|
||||
subscribesvc "legalgo-BE-go/internal/services/subscribe"
|
||||
subscribeplansvc "legalgo-BE-go/internal/services/subscribe_plan"
|
||||
tagsvc "legalgo-BE-go/internal/services/tag"
|
||||
@@ -17,5 +18,6 @@ var Module = fx.Module("services",
|
||||
subscribesvc.New,
|
||||
tagsvc.New,
|
||||
categorysvc.New,
|
||||
newssvc.New,
|
||||
),
|
||||
)
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package newssvc
|
||||
|
||||
import (
|
||||
newsdomain "legalgo-BE-go/internal/domain/news"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func (i *impl) Create(spec newsdomain.NewsReq, staffId string) error {
|
||||
slug := strings.ToLower(strings.ReplaceAll(spec.Title, " ", "-"))
|
||||
|
||||
tags, err := i.tagRepo.GetByIDs(spec.Tags)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
categories, err := i.categoryRepo.GetByIDs(spec.Categories)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
parsedTime, err := time.Parse(time.RFC3339, spec.LiveAt)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
newSpec := &newsdomain.News{
|
||||
ID: uuid.NewString(),
|
||||
Title: spec.Title,
|
||||
Content: spec.Content,
|
||||
FeaturedImage: spec.FeaturedImage,
|
||||
IsPremium: spec.IsPremium,
|
||||
Slug: slug,
|
||||
LiveAt: parsedTime,
|
||||
AuthorID: staffId,
|
||||
Tags: tags,
|
||||
Categories: categories,
|
||||
}
|
||||
|
||||
if err := i.newsRepo.Create(newSpec); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package newssvc
|
||||
|
||||
import (
|
||||
"legalgo-BE-go/database"
|
||||
newsdomain "legalgo-BE-go/internal/domain/news"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func (i *impl) CreateModel(spec newsdomain.NewsReq, staffId string) error {
|
||||
slug := strings.ToLower(strings.ReplaceAll(spec.Title, " ", "-"))
|
||||
|
||||
tags, err := i.tagRepo.GetBulks(spec.Tags)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
categories, err := i.categoryRepo.GetBulks(spec.Categories)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
parsedTime, err := time.Parse(time.RFC3339, spec.LiveAt)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
newSpec := database.NewsModel{
|
||||
ID: uuid.NewString(),
|
||||
Title: spec.Title,
|
||||
Content: spec.Content,
|
||||
FeaturedImage: spec.FeaturedImage,
|
||||
IsPremium: spec.IsPremium,
|
||||
Slug: slug,
|
||||
LiveAt: parsedTime,
|
||||
AuthorID: staffId,
|
||||
Tags: tags,
|
||||
Categories: categories,
|
||||
}
|
||||
|
||||
if err := i.newsRepo.CreateModel(newSpec); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package newssvc
|
||||
|
||||
import newsdomain "legalgo-BE-go/internal/domain/news"
|
||||
|
||||
func (i *impl) GetAll() ([]newsdomain.News, error) {
|
||||
return i.newsRepo.GetAll()
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package newssvc
|
||||
|
||||
import (
|
||||
"legalgo-BE-go/database"
|
||||
)
|
||||
|
||||
func (i *impl) GetAllModel() ([]database.NewsModel, error) {
|
||||
return i.newsRepo.GetAllModel()
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package newssvc
|
||||
|
||||
import (
|
||||
"legalgo-BE-go/database"
|
||||
categoryrepository "legalgo-BE-go/internal/accessor/category"
|
||||
newsrepository "legalgo-BE-go/internal/accessor/news"
|
||||
tagrepository "legalgo-BE-go/internal/accessor/tag"
|
||||
newsdomain "legalgo-BE-go/internal/domain/news"
|
||||
)
|
||||
|
||||
type impl struct {
|
||||
newsRepo newsrepository.News
|
||||
tagRepo tagrepository.TagAccessor
|
||||
categoryRepo categoryrepository.Category
|
||||
}
|
||||
|
||||
type News interface {
|
||||
GetAll() ([]newsdomain.News, error)
|
||||
GetAllModel() ([]database.NewsModel, error)
|
||||
Create(newsdomain.NewsReq, string) error
|
||||
CreateModel(newsdomain.NewsReq, string) error
|
||||
}
|
||||
|
||||
func New(
|
||||
newsRepo newsrepository.News,
|
||||
tagRepo tagrepository.TagAccessor,
|
||||
categoryRepo categoryrepository.Category,
|
||||
) News {
|
||||
return &impl{
|
||||
newsRepo,
|
||||
tagRepo,
|
||||
categoryRepo,
|
||||
}
|
||||
}
|
||||
@@ -3,5 +3,6 @@ package tagsvc
|
||||
import tagdomain "legalgo-BE-go/internal/domain/tag"
|
||||
|
||||
func (i *impl) Create(spec tagdomain.TagReq) error {
|
||||
return i.tagRepo.Create(spec)
|
||||
// return i.tagRepo.Create(spec)
|
||||
return i.tagRepo.CreateModel(spec)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package tagsvc
|
||||
|
||||
import (
|
||||
"legalgo-BE-go/database"
|
||||
)
|
||||
|
||||
func (i *impl) GetAllModel() ([]database.TagModel, error) {
|
||||
return i.tagRepo.GetAllModel()
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package tagsvc
|
||||
|
||||
import (
|
||||
"legalgo-BE-go/database"
|
||||
tagrepository "legalgo-BE-go/internal/accessor/tag"
|
||||
tagdomain "legalgo-BE-go/internal/domain/tag"
|
||||
)
|
||||
@@ -12,6 +13,7 @@ type impl struct {
|
||||
type TagIntf interface {
|
||||
Create(tagdomain.TagReq) error
|
||||
GetAll() ([]tagdomain.Tag, error)
|
||||
GetAllModel() ([]database.TagModel, error)
|
||||
}
|
||||
|
||||
func New(
|
||||
|
||||
Reference in New Issue
Block a user