add routers themes
This commit is contained in:
112
main.go
112
main.go
@@ -5,22 +5,22 @@ import (
|
||||
conf "go_blog/config"
|
||||
"go_blog/controllers"
|
||||
"go_blog/models"
|
||||
"go_blog/routers"
|
||||
"go_blog/serializers"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"go_blog/themes"
|
||||
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/schema"
|
||||
"honnef.co/go/tools/config"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
Name string
|
||||
Gender string
|
||||
Age int
|
||||
Password string
|
||||
PasswordHash []byte
|
||||
}
|
||||
|
||||
const templatePath = "./templates/*"
|
||||
|
||||
func init() {
|
||||
@@ -29,13 +29,36 @@ func init() {
|
||||
}
|
||||
|
||||
func main() {
|
||||
r := gin.Default()
|
||||
|
||||
r.LoadHTMLGlob(templatePath)
|
||||
// 4. 初始化主题管理器
|
||||
themeManager := themes.NewManager()
|
||||
if err := themeManager.LoadTheme(conf.GetCurrentTheme()); err != nil {
|
||||
panic("主题加载失败: " + err.Error())
|
||||
}
|
||||
|
||||
// 5. 创建Gin实例
|
||||
router := gin.Default()
|
||||
router.LoadHTMLGlob(templatePath)
|
||||
// 注册WebSocket路由
|
||||
registerRoutes(r)
|
||||
r.GET("/events", esSSE)
|
||||
r.Run(":8910")
|
||||
registerRoutes(router)
|
||||
router.GET("/events", esSSE)
|
||||
|
||||
// 6. 注册中间件
|
||||
router.Use(
|
||||
gin.Logger(),
|
||||
gin.Recovery(),
|
||||
databaseMiddleware(models.DB),
|
||||
//configMiddleware(cfg),
|
||||
themeMiddleware(themeManager),
|
||||
)
|
||||
|
||||
// 7. 设置模板路径
|
||||
//router.HTMLRender = createTemplateRenderer(cfg.Theme.Current)
|
||||
|
||||
// 8. 注册路由
|
||||
routers.RegisterRoutes(router)
|
||||
// 9. 启动服务
|
||||
router.Run(":8910") //router.Run(":" + cfg.Server.Port)
|
||||
}
|
||||
func esSSE(c *gin.Context) {
|
||||
w := c.Writer
|
||||
@@ -117,8 +140,8 @@ func registerRoutes(r *gin.Engine) {
|
||||
|
||||
}
|
||||
|
||||
func getUserInfo() User {
|
||||
user := User{
|
||||
func getUserInfo() models.User {
|
||||
user := models.User{
|
||||
Name: "user",
|
||||
Gender: "male",
|
||||
Age: 18,
|
||||
@@ -127,3 +150,62 @@ func getUserInfo() User {
|
||||
}
|
||||
return user
|
||||
}
|
||||
|
||||
func initDatabase() {
|
||||
// 1. 初始化配置
|
||||
cfg, err := config.Load("config.yaml")
|
||||
if err != nil {
|
||||
panic("加载配置失败: " + err.Error())
|
||||
}
|
||||
|
||||
// 2. 初始化数据库
|
||||
db, err := gorm.Open(mysql.Open(cfg.String()), &gorm.Config{
|
||||
NamingStrategy: schema.NamingStrategy{
|
||||
TablePrefix: conf.DataBase.Prefix,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
panic("数据库连接失败: " + err.Error())
|
||||
}
|
||||
|
||||
// 3. 自动迁移数据模型
|
||||
if err := db.AutoMigrate(&models.Article{}, &models.User{}); err != nil {
|
||||
panic("数据库迁移失败: " + err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// 自定义模板渲染器
|
||||
// func createTemplateRenderer(currentTheme string) gin.HTMLRender {
|
||||
// return gin.HTMLTemplates{
|
||||
// Root: "web/templates",
|
||||
// Extension: ".html",
|
||||
// FuncMap: template.FuncMap{
|
||||
// "safe": func(s string) template.HTML { return template.HTML(s) },
|
||||
// },
|
||||
// Directory: "web/themes/" + currentTheme,
|
||||
// }
|
||||
// }
|
||||
|
||||
// 数据库中间件
|
||||
func databaseMiddleware(db *gorm.DB) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
c.Set("DB", db)
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
// 配置上下文中间件
|
||||
func configMiddleware(cfg *config.Config) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
c.Set("Config", cfg)
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
// 主题管理器中间件
|
||||
func themeMiddleware(manager *themes.ThemeManager) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
c.Set("ThemeManager", manager)
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user