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

100 lines
2.0 KiB
Go

package mApp
import (
"fmt"
"html/template"
"log"
"MollyBlog/config"
"MollyBlog/internal/model"
"github.com/88250/lute"
"github.com/gin-gonic/gin"
"github.com/huichen/wukong/engine"
)
type MApp struct {
Host string
Port int
Config *config.MConfig
lute *lute.Lute
engine *gin.Engine
searcher *engine.Engine
Posts []*model.MPost
IndexedPosts map[uint64]*model.MPost
Tags map[string]string
TagsCount map[string]int
Categories map[string]string
CategoriesCount map[string]int
TaggedPosts map[string][]*model.MPost
CategorizedPosts map[string][]*model.MPost
SrcFiles []model.MFileInfo
}
const (
SRC = "_post/src" // source markdown files
DST = "_post/dst" // destination html files
)
func (ma *MApp) Run() {
ma.loadRoutes()
ma.loadTemplates()
addr := fmt.Sprintf("%s:%d", ma.Host, ma.Port)
err := ma.engine.Run(addr)
if err != nil {
log.Fatal(err)
}
}
func NewMApp(cfg *config.MConfig) *MApp {
engine := gin.Default()
engine.SetFuncMap(template.FuncMap{
"add": func(a, b int) int {
return a + b
},
})
return &MApp{
Host: cfg.Host,
Port: cfg.Port,
Config: cfg,
IndexedPosts: make(map[uint64]*model.MPost),
Tags: make(map[string]string),
TagsCount: make(map[string]int),
Categories: make(map[string]string),
CategoriesCount: make(map[string]int),
TaggedPosts: make(map[string][]*model.MPost),
CategorizedPosts: make(map[string][]*model.MPost),
lute: lute.New(),
engine: engine,
}
}
// resetStorage before each update, delete the cache
func (ma *MApp) resetStorage() {
ma.Posts = nil
ma.Tags = nil
ma.Categories = nil
ma.CategoriesCount = nil
ma.TaggedPosts = nil
ma.CategorizedPosts = nil
ma.SrcFiles = nil
ma.Tags = make(map[string]string)
ma.TagsCount = make(map[string]int)
ma.Categories = make(map[string]string)
ma.CategoriesCount = make(map[string]int)
ma.TaggedPosts = make(map[string][]*model.MPost)
ma.CategorizedPosts = make(map[string][]*model.MPost)
}