mirror of
https://github.com/yv1ing/MollyBlog.git
synced 2025-09-16 14:53:45 +08:00
51 lines
1.1 KiB
Go
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
|
|
}
|