Files
MollyBlog/internal/model/mPost.go
2024-12-17 16:15:51 +08:00

51 lines
1.1 KiB
Go

package model
import (
"sort"
"time"
)
// MPost post metadata
type MPost struct {
Index uint64 `yaml:"index" json:"index"`
Title string `yaml:"title" json:"title"`
Cover string `yaml:"cover" json:"cover"`
Date string `yaml:"date" json:"date"`
Tags []string `yaml:"tags" json:"tags"`
TagHashes []MTag `yaml:"tag_hashes" json:"tag_hashes"`
Categories []string `yaml:"categories" json:"categories"`
CategoryHashes []MCategory `yaml:"category_hashes" json:"category_hashes"`
HtmlHash string `yaml:"htmlHash" json:"html_hash"`
HtmlPath string `yaml:"htmlPath" json:"html_path"`
}
type MPostSlice []*MPost
func (a MPostSlice) Len() int {
return len(a)
}
func (a MPostSlice) Swap(i, j int) {
a[i], a[j] = a[j], a[i]
}
func (a MPostSlice) Less(i, j int) bool {
timeFormat := "2006-01-02 15:04:05"
t1, err1 := time.Parse(timeFormat, a[i].Date)
t2, err2 := time.Parse(timeFormat, a[j].Date)
if err1 != nil || err2 != nil {
return false
}
return t1.After(t2)
}
func SortPostsByDate(Posts []*MPost) []*MPost {
sort.Sort(MPostSlice(Posts))
return Posts
}