fix: added some business rules to article creation

This commit is contained in:
Floriansylvain
2025-12-22 01:18:50 +01:00
parent 5282770caa
commit 76245c47c9
3 changed files with 11 additions and 4 deletions
+1
View File
@@ -7,6 +7,7 @@ import (
) )
var ( var (
ErrInvalidTitle = errors.New("article's title length should be between 3 and 200 caracters")
ErrArticleNotFound = errors.New("article not found") ErrArticleNotFound = errors.New("article not found")
ErrArticleOffline = errors.New("article is offline") ErrArticleOffline = errors.New("article is offline")
) )
@@ -58,6 +58,7 @@ func (a *ArticleRepository) Create(article domain.Article) (domain.Article, erro
creationResult := a.db.Create(&entity.Article{ creationResult := a.db.Create(&entity.Article{
Title: article.Title, Title: article.Title,
Body: article.Body, Body: article.Body,
IsOnline: article.IsOnline,
}) })
if creationResult.Error != nil { if creationResult.Error != nil {
return domain.Article{}, creationResult.Error return domain.Article{}, creationResult.Error
@@ -18,8 +18,13 @@ func NewCreateArticleUseCase(articleRepository article.Repository) *CreateArticl
} }
func (g *CreateArticleUseCase) CreateArticle(createArticle CreateArticleCommand) (article.Article, error) { func (g *CreateArticleUseCase) CreateArticle(createArticle CreateArticleCommand) (article.Article, error) {
if len(createArticle.Title) < 3 || len(createArticle.Title) > 200 {
return article.Article{}, article.ErrInvalidTitle
}
return g.articleRepository.Create(article.Article{ return g.articleRepository.Create(article.Article{
Title: createArticle.Title, Title: createArticle.Title,
Body: createArticle.Body, Body: createArticle.Body,
IsOnline: false,
}) })
} }