refac: article title rules are the same in the API request and the domain; an invalid title returns 400 instead of 500

This commit is contained in:
fsylvain committed 2026-09-23 20:04:09 +02:00
1 parent ff8cd5f0ec
commit 4278d96882
9 files changed
+456 -7

No files matched your search

+14
View File
@@ -4,6 +4,7 @@ import (
domain "RenewCMS/internal/domain/image"
"errors"
"time"
"unicode/utf8"
)
var (
@@ -12,6 +13,19 @@ var (
ErrArticleOffline = errors.New("article is offline")
)
const (
MinTitleRunes = 3
MaxTitleRunes = 200
)
func ValidateTitle(title string) error {
runeCount := utf8.RuneCountInString(title)
if runeCount < MinTitleRunes || runeCount > MaxTitleRunes {
return ErrInvalidTitle
}
return nil
}
type Article struct {
ID uint32 `json:"id"`
Title string `json:"title"`
@@ -18,8 +18,8 @@ func NewCreateArticleUseCase(articleRepository article.Repository) *CreateArticl
}
func (g *CreateArticleUseCase) CreateArticle(createArticle CreateArticleCommand) (article.Article, error) {
if len(createArticle.Title) < 3 || len(createArticle.Title) > 200 {
return article.Article{}, article.ErrInvalidTitle
if err := article.ValidateTitle(createArticle.Title); err != nil {
return article.Article{}, err
}
return g.articleRepository.Create(article.Article{