1
0
dwelling-home/pkg/mindflow/mindflow.go

53 lines
1.0 KiB
Go
Raw Normal View History

2023-05-10 03:19:02 +04:00
package mindflow
import (
"errors"
"fmt"
"strings"
"time"
)
type Category struct {
ID int64
Name string
}
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 {
name := strings.ToLower(p.Category.Name)
name = strings.ReplaceAll(name, " ", ".")
return fmt.Sprint(name, "-", p.Date.Format("20060102-1504"))
}
2023-05-10 03:19:02 +04:00
type Mindflow interface {
New(post *Post) error
Edit(post *Post) error
2023-05-10 03:19:02 +04:00
Delete(id int64) error
Posts() ([]Post, error)
2023-05-22 05:21:53 +04:00
Categories() ([]Category, error)
NewCategory(name string) (int64, error)
GetCategoryByID(id int64) (string, error)
2023-05-23 00:22:12 +04:00
EditCategory(category *Category) error
DeleteCategory(id int64) error
DeleteUnusedCategories() error
Close() error
2023-05-10 03:19:02 +04:00
}