init
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
package render
|
||||
|
||||
import (
|
||||
"bbs-go/internal/models"
|
||||
"bbs-go/internal/models/constants"
|
||||
"bbs-go/internal/pkg/bbsurls"
|
||||
"bbs-go/internal/pkg/common"
|
||||
"bbs-go/internal/pkg/text"
|
||||
"bbs-go/internal/services"
|
||||
"strings"
|
||||
|
||||
"github.com/PuerkitoBio/goquery"
|
||||
)
|
||||
|
||||
func BuildFavorite(favorite *models.Favorite) *models.FavoriteResponse {
|
||||
rsp := &models.FavoriteResponse{}
|
||||
rsp.Id = favorite.Id
|
||||
rsp.EntityType = favorite.EntityType
|
||||
rsp.CreateTime = favorite.CreateTime
|
||||
|
||||
if favorite.EntityType == constants.EntityArticle {
|
||||
article := services.ArticleService.Get(favorite.EntityId)
|
||||
if article == nil || article.Status != constants.StatusOk {
|
||||
rsp.Deleted = true
|
||||
} else {
|
||||
rsp.Url = bbsurls.ArticleUrl(article.Id)
|
||||
rsp.User = BuildUserInfoDefaultIfNull(article.UserId)
|
||||
rsp.Title = article.Title
|
||||
if article.ContentType == constants.ContentTypeMarkdown {
|
||||
rsp.Content = common.GetMarkdownSummary(article.Content)
|
||||
} else if article.ContentType == constants.ContentTypeHtml {
|
||||
doc, err := goquery.NewDocumentFromReader(strings.NewReader(article.Content))
|
||||
if err == nil {
|
||||
rsp.Content = text.GetSummary(doc.Text(), constants.SummaryLen)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
topic := services.TopicService.Get(favorite.EntityId)
|
||||
if topic == nil || topic.Status != constants.StatusOk {
|
||||
rsp.Deleted = true
|
||||
} else {
|
||||
rsp.Url = bbsurls.TopicUrl(topic.Id)
|
||||
rsp.User = BuildUserInfoDefaultIfNull(topic.UserId)
|
||||
rsp.Title = topic.Title
|
||||
rsp.Content = common.GetMarkdownSummary(topic.Content)
|
||||
}
|
||||
}
|
||||
return rsp
|
||||
}
|
||||
|
||||
func BuildFavorites(favorites []models.Favorite) []models.FavoriteResponse {
|
||||
if len(favorites) == 0 {
|
||||
return nil
|
||||
}
|
||||
var responses []models.FavoriteResponse
|
||||
for _, favorite := range favorites {
|
||||
responses = append(responses, *BuildFavorite(&favorite))
|
||||
}
|
||||
return responses
|
||||
}
|
||||
Reference in New Issue
Block a user