Files
crowsnest/internal/model/article.go

48 lines
819 B
Go

package model
import (
"net/url"
"time"
)
// TODO docstring
type Article struct {
Identifier int
SourceUrl string
PublishDate time.Time
FetchDate time.Time
Title string
Content string
}
// TODO docstring
type ArticleViewModel struct {
Title string
PublishDate string
SourceUrl string
ShortSource string
Summary string
}
// TODO docstring
func (a *Article) ViewModel() *ArticleViewModel {
summary := a.Content
if len(a.Content) > 300 {
summary = summary[:300]
}
short_url := ""
parsedURL, err := url.Parse(a.SourceUrl)
if err == nil {
short_url = parsedURL.Hostname()
}
return &ArticleViewModel{
Title: a.Title,
PublishDate: a.PublishDate.Local().Format("02.01.2006"),
SourceUrl: a.SourceUrl,
ShortSource: short_url,
Summary: summary,
}
}