LabCodeHub öffentliche Ansicht
Anmelden
Küpper / Quildrop öffentlich
Branch: main
Quildrop / internal / generator / search.go
Verlauf Rohdaten
R Rüdiger Küpper fix: first commit
06fa7c25 vor 6 Monaten
internal/generator/search.go 64 Zeilen · 1.5 KB · Go
1
package generator
2
3
import (
4
	"encoding/json"
5
	"log"
6
	"os"
7
8
	"github.com/ruedigerp/newblog/internal/content"
9
)
10
11
type searchEntry struct {
12
	Title      string   `json:"title"`
13
	Slug       string   `json:"slug"`
14
	Date       string   `json:"date"`
15
	Tags       []string `json:"tags"`
16
	Categories []string `json:"categories"`
17
	Preview    string   `json:"preview"`
18
	Cover      string   `json:"cover"`
19
	URL        string   `json:"url"`
20
}
21
22
func GenerateSearchIndex(posts []*content.Post, outputPath string) {
23
	entries := make([]searchEntry, 0, len(posts))
24
25
	months := []string{
26
		"", "Januar", "Februar", "März", "April", "Mai", "Juni",
27
		"Juli", "August", "September", "Oktober", "November", "Dezember",
28
	}
29
30
	for _, p := range posts {
31
		date := p.Date.Time
32
		dateStr := date.Format("02.") + " " + months[date.Month()] + " " + date.Format("2006")
33
34
		tags := p.Tags
35
		if tags == nil {
36
			tags = []string{}
37
		}
38
		cats := p.Categories
39
		if cats == nil {
40
			cats = []string{}
41
		}
42
43
		entries = append(entries, searchEntry{
44
			Title:      p.Title,
45
			Slug:       p.Slug,
46
			Date:       dateStr,
47
			Tags:       tags,
48
			Categories: cats,
49
			Preview:    p.GetPreview(),
50
			Cover:      p.GetCover(),
51
			URL:        "/posts/" + p.Slug + "/",
52
		})
53
	}
54
55
	data, err := json.MarshalIndent(entries, "", "  ")
56
	if err != nil {
57
		log.Printf("Error marshaling search index: %v", err)
58
		return
59
	}
60
61
	if err := os.WriteFile(outputPath, data, 0644); err != nil {
62
		log.Printf("Error writing search index: %v", err)
63
	}
64
}