-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathmain.go
More file actions
90 lines (82 loc) · 2.29 KB
/
main.go
File metadata and controls
90 lines (82 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package main
import (
"time"
global "QA-System/internal/global/config"
"QA-System/internal/middleware"
"QA-System/internal/pkg/database/mongodb"
"QA-System/internal/pkg/database/mysql"
"QA-System/internal/pkg/idgen"
"QA-System/internal/pkg/log"
"QA-System/internal/pkg/session"
"QA-System/internal/pkg/utils"
"QA-System/internal/router"
"QA-System/internal/service"
"QA-System/pkg/extension"
_ "QA-System/plugins"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
func main() {
var loc *time.Location
loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
zap.L().Error("Failed to load location, using fixed zone instead", zap.Error(err))
loc = time.FixedZone("CST", 8*60*60)
}
time.Local = loc
// 如果配置文件中开启了调试模式
if !global.Config.GetBool("server.debug") {
gin.SetMode(gin.ReleaseMode)
}
// 初始化日志系统
log.ZapInit()
// 初始化雪花生成器
idgen.Init()
// 初始化数据库
db := mysql.Init()
mdb := mongodb.Init()
// 初始化dao
service.Init(db, mdb)
if err := utils.Init(); err != nil {
zap.L().Fatal(err.Error())
}
// 初始化插件管理器并加载插件
pm := extension.GetDefaultManager()
plugins, err := pm.LoadPlugins()
if err != nil {
zap.L().Error("Error loading plugins", zap.Error(err))
}
// 打印插件状态信息
for _, plugin := range plugins {
metadata := plugin.GetMetadata()
status, healthy := extension.GetPluginStatus(metadata.Name)
if healthy {
zap.L().Info("Plugin loaded successfully",
zap.String("name", metadata.Name),
zap.String("version", metadata.Version),
zap.String("status", status))
} else {
zap.L().Warn("Plugin loaded but unhealthy",
zap.String("name", metadata.Name),
zap.String("version", metadata.Version),
zap.String("status", status))
}
}
err = pm.ExecutePluginList()
if err != nil {
zap.L().Error("Error executing plugins", zap.Error(err))
}
// 初始化gin
r := gin.Default()
r.Use(middleware.ErrHandler())
r.NoMethod(middleware.HandleNotFound)
r.NoRoute(middleware.HandleNotFound)
r.Static("public/static", "./public/static")
r.Static("public/xlsx", "./public/xlsx")
session.Init(r)
router.Init(r)
err = r.Run(":" + global.Config.GetString("server.port"))
if err != nil {
zap.L().Fatal("Failed to start the server:" + err.Error())
}
}