2025-05-12 11:09:11 +08:00

54 lines
1.3 KiB
Go

package mynode
import (
"admin/internal/context"
"admin/internal/db"
"admin/internal/global"
"admin/lib/node"
"admin/lib/web"
"admin/lib/xlog"
"admin/ui"
"github.com/gin-gonic/gin"
"net/http"
)
func New() *node.Node {
nd := node.NewNode()
nd.ApplyOptions(node.WithNodeExBootFlags(global.GLOB_BOOT_FLAGS))
nd.AddInitTask("初始化全局api监听服务", func() error {
global.GLOB_API_ENGINE = web.New(context.NewWebContext)
global.GLOB_API_ENGINE.GetRawEngine().Use(ui.Serve("/", ui.EmbedFolder(ui.UI, "static")))
global.GLOB_API_ENGINE.GetRawEngine().NoRoute(func(c *gin.Context) {
data, err := ui.UI.ReadFile("static/index.html")
if err != nil {
c.AbortWithError(http.StatusInternalServerError, err)
return
}
c.Data(http.StatusOK, "text/html; charset=utf-8", data)
})
return nil
})
nd.AddInitTask("初始化数据库", func() error {
flags := global.GLOB_BOOT_FLAGS
_, err := db.NewDB(flags.DBType, flags.DBAddr, flags.DBName, flags.DBUser, flags.DBPass)
return err
})
nd.AddPostTask("启动全局api监听服务", func() error {
go func() {
err := global.GLOB_API_ENGINE.Run(":" + global.GLOB_BOOT_FLAGS.ApiPort)
if err != nil {
xlog.Errorf("start api server on %v error: %v", global.GLOB_BOOT_FLAGS, err)
}
}()
return nil
})
return nd
}