2022-08-10 19:46:17 +08:00
|
|
|
package starter
|
|
|
|
|
|
|
|
|
|
import (
|
2023-12-27 22:59:20 +08:00
|
|
|
"context"
|
2023-07-21 17:07:04 +08:00
|
|
|
"mayfly-go/initialize"
|
2025-04-18 22:07:37 +08:00
|
|
|
"mayfly-go/internal/pkg/config"
|
2025-02-13 21:11:23 +08:00
|
|
|
"mayfly-go/migration"
|
2023-07-20 20:34:05 +08:00
|
|
|
"mayfly-go/pkg/global"
|
2023-09-02 17:24:18 +08:00
|
|
|
"mayfly-go/pkg/logx"
|
2023-07-31 17:34:32 +08:00
|
|
|
"mayfly-go/pkg/validatorx"
|
2023-12-27 22:59:20 +08:00
|
|
|
"os"
|
|
|
|
|
"os/signal"
|
|
|
|
|
"syscall"
|
2022-08-10 19:46:17 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func RunWebServer() {
|
2023-12-27 22:59:20 +08:00
|
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
|
|
|
defer cancel()
|
|
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
|
quit := make(chan os.Signal, 1)
|
|
|
|
|
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
|
|
|
|
<-quit
|
|
|
|
|
cancel()
|
|
|
|
|
}()
|
|
|
|
|
|
2023-09-02 17:24:18 +08:00
|
|
|
// 初始化config.yml配置文件映射信息或使用环境变量。并初始化系统日志相关配置
|
2022-08-10 19:46:17 +08:00
|
|
|
config.Init()
|
2023-07-21 17:07:04 +08:00
|
|
|
|
2022-08-10 19:46:17 +08:00
|
|
|
// 打印banner
|
|
|
|
|
printBanner()
|
2023-07-21 17:07:04 +08:00
|
|
|
|
2022-08-10 19:46:17 +08:00
|
|
|
// 初始化并赋值数据库全局变量
|
|
|
|
|
initDb()
|
2023-07-21 17:07:04 +08:00
|
|
|
|
2025-04-23 20:36:32 +08:00
|
|
|
// 初始化缓存
|
|
|
|
|
initCache()
|
2023-07-22 20:51:46 +08:00
|
|
|
|
2023-07-20 20:34:05 +08:00
|
|
|
// 数据库升级操作
|
2025-02-13 21:11:23 +08:00
|
|
|
if err := migration.RunMigrations(global.Db); err != nil {
|
|
|
|
|
logx.Panicf("db migration failed: %v", err)
|
2023-07-20 20:34:05 +08:00
|
|
|
}
|
2023-07-21 17:07:04 +08:00
|
|
|
|
2023-07-31 17:34:32 +08:00
|
|
|
// 参数校验器初始化、如错误提示中文转译等
|
|
|
|
|
validatorx.Init()
|
2025-04-18 22:07:37 +08:00
|
|
|
// 注册自定义正则表达式校验规则
|
|
|
|
|
RegisterCustomPatterns()
|
2023-07-31 17:34:32 +08:00
|
|
|
|
2023-07-21 17:07:04 +08:00
|
|
|
// 初始化其他需要启动时运行的方法
|
|
|
|
|
initialize.InitOther()
|
|
|
|
|
|
2022-08-10 19:46:17 +08:00
|
|
|
// 运行web服务
|
2023-12-27 22:59:20 +08:00
|
|
|
runWebServer(ctx)
|
2022-08-10 19:46:17 +08:00
|
|
|
}
|
2025-04-18 22:07:37 +08:00
|
|
|
|
|
|
|
|
// 注册自定义正则表达式校验规则
|
|
|
|
|
func RegisterCustomPatterns() {
|
|
|
|
|
// 账号用户名校验
|
|
|
|
|
validatorx.RegisterPattern("account_username", "^[a-zA-Z0-9_]{5,20}$", "只允许输入5-20位大小写字母、数字、下划线")
|
|
|
|
|
validatorx.RegisterPattern("resource_code", "^[a-zA-Z0-9_\\-.:]{1,32}$", "只允许输入1-32位大小写字母、数字、_-.:")
|
|
|
|
|
}
|