49 lines
973 B
Go
49 lines
973 B
Go
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.GetByIDs(spec.Categories)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
parsedTime, err := time.Parse(time.RFC3339, spec.LiveAt)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
newSpec := database.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.CreateModel(newSpec); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|