38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package useCases
|
|
|
|
import "RenewCMS/internal/domain/article"
|
|
|
|
type GetArticleUseCase struct {
|
|
articleRepository article.Repository
|
|
bodyRenderer article.BodyRenderer
|
|
}
|
|
|
|
func NewGetArticleUseCase(articleRepository article.Repository, bodyRenderer article.BodyRenderer) *GetArticleUseCase {
|
|
return &GetArticleUseCase{articleRepository, bodyRenderer}
|
|
}
|
|
|
|
func (u *GetArticleUseCase) GetOnlineArticle(id uint32, format article.BodyFormat) (article.Article, error) {
|
|
art, err := u.articleRepository.Get(id)
|
|
if err != nil {
|
|
return article.Article{}, err
|
|
}
|
|
|
|
if !art.IsOnline {
|
|
return article.Article{}, article.ErrArticleNotFound
|
|
}
|
|
|
|
return renderArticle(u.bodyRenderer, art, format)
|
|
}
|
|
|
|
func (u *GetArticleUseCase) GetArticle(id uint32, format article.BodyFormat) (article.Article, error) {
|
|
art, err := u.articleRepository.Get(id)
|
|
if err != nil {
|
|
return article.Article{}, err
|
|
}
|
|
return renderArticle(u.bodyRenderer, art, format)
|
|
}
|
|
|
|
func (g *GetArticleUseCase) GetArticleByName(name string) (article.Article, error) {
|
|
return g.articleRepository.GetByName(name)
|
|
}
|