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
 | |
| }
 | 
