owl-blogs/domain/model/entry.go

71 lines
1.1 KiB
Go
Raw Permalink Normal View History

2023-06-25 18:04:06 +00:00
package model
import (
2024-05-17 19:05:13 +00:00
"net/url"
"time"
)
2023-06-25 18:04:06 +00:00
type EntryContent string
type Entry interface {
ID() string
Content() EntryContent
PublishedAt() *time.Time
2023-07-13 19:55:08 +00:00
AuthorId() string
MetaData() EntryMetaData
2023-07-09 17:51:49 +00:00
// Optional: can return empty string
Title() string
2024-02-24 20:21:48 +00:00
ImageUrl() string
2023-07-08 13:56:42 +00:00
SetID(id string)
SetPublishedAt(publishedAt *time.Time)
SetMetaData(metaData EntryMetaData)
2023-07-13 19:55:08 +00:00
SetAuthorId(authorId string)
2024-05-17 19:05:13 +00:00
FullUrl(cfg SiteConfig) string
2023-06-25 18:04:06 +00:00
}
type EntryMetaData interface {
2024-02-21 19:24:18 +00:00
Formable
2023-06-25 18:04:06 +00:00
}
2023-07-08 13:56:42 +00:00
type EntryBase struct {
id string
publishedAt *time.Time
2023-07-13 19:55:08 +00:00
authorId string
2023-07-08 13:56:42 +00:00
}
func (e *EntryBase) ID() string {
return e.id
}
func (e *EntryBase) PublishedAt() *time.Time {
return e.publishedAt
}
2024-02-24 20:21:48 +00:00
func (e *EntryBase) ImageUrl() string {
return ""
}
2023-07-08 13:56:42 +00:00
func (e *EntryBase) SetID(id string) {
e.id = id
}
func (e *EntryBase) SetPublishedAt(publishedAt *time.Time) {
e.publishedAt = publishedAt
}
2023-07-13 19:55:08 +00:00
func (e *EntryBase) AuthorId() string {
return e.authorId
}
func (e *EntryBase) SetAuthorId(authorId string) {
e.authorId = authorId
}
2024-05-17 19:05:13 +00:00
func (e *EntryBase) FullUrl(cfg SiteConfig) string {
u, _ := url.JoinPath(cfg.FullUrl, "/posts/", e.ID(), "/")
return u
}