From 76245c47c900437ea98b0f96f4b9fe0d7c21d38a Mon Sep 17 00:00:00 2001 From: Floriansylvain Date: Mon, 22 Dec 2025 01:18:50 +0100 Subject: [PATCH] fix: added some business rules to article creation --- internal/domain/article/articleDomain.go | 1 + .../persistence/repositories/articleRepository.go | 5 +++-- internal/infrastructure/useCases/CreateArticle.go | 9 +++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/internal/domain/article/articleDomain.go b/internal/domain/article/articleDomain.go index d548e61..5052402 100644 --- a/internal/domain/article/articleDomain.go +++ b/internal/domain/article/articleDomain.go @@ -7,6 +7,7 @@ import ( ) var ( + ErrInvalidTitle = errors.New("article's title length should be between 3 and 200 caracters") ErrArticleNotFound = errors.New("article not found") ErrArticleOffline = errors.New("article is offline") ) diff --git a/internal/infrastructure/persistence/repositories/articleRepository.go b/internal/infrastructure/persistence/repositories/articleRepository.go index 9e9a810..55429e0 100644 --- a/internal/infrastructure/persistence/repositories/articleRepository.go +++ b/internal/infrastructure/persistence/repositories/articleRepository.go @@ -56,8 +56,9 @@ func (a *ArticleRepository) GetByName(name string) (domain.Article, error) { func (a *ArticleRepository) Create(article domain.Article) (domain.Article, error) { creationResult := a.db.Create(&entity.Article{ - Title: article.Title, - Body: article.Body, + Title: article.Title, + Body: article.Body, + IsOnline: article.IsOnline, }) if creationResult.Error != nil { return domain.Article{}, creationResult.Error diff --git a/internal/infrastructure/useCases/CreateArticle.go b/internal/infrastructure/useCases/CreateArticle.go index dd65eac..62dd036 100644 --- a/internal/infrastructure/useCases/CreateArticle.go +++ b/internal/infrastructure/useCases/CreateArticle.go @@ -18,8 +18,13 @@ 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 + } + return g.articleRepository.Create(article.Article{ - Title: createArticle.Title, - Body: createArticle.Body, + Title: createArticle.Title, + Body: createArticle.Body, + IsOnline: false, }) }