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:
1 parent
ff8cd5f0ec
commit
4278d96882
9 files changed
+456
-7
No files matched your search
@@ -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{
|
||||
|
||||
Reference in new issue
Block a user