package mindflow import ( "errors" "fmt" "strings" "time" ) type Post struct { ID int64 Category Category Date time.Time Title string Body string } func NewPost(category Category, title, body string) (*Post, error) { if title == "" || body == "" { return nil, errors.New("empty title or body is not allowed") } return &Post{ Category: category, Date: time.Now().UTC(), Title: title, Body: body}, nil } func (p *Post) PostID() string { return fmt.Sprint(strings.ToLower(p.Category.Name), "-", p.Date.Format("20060102-1504")) }