Files
apiServer-service/cmd/main_program/main.go
T
shiran aa9f892a32 feat: 添加数据库集成、定时任务调度器和事件Hook体系
- 新增数据库配置项(DB_TYPE, DB_HOST, DB_PORT等),支持MySQL和PostgreSQL
- 集成GORM实现数据库连接和自动迁移功能
- 添加定时任务调度器(cmd/scheduler),基于robfig/cron实现秒级调度
- 实现事件Hook体系,支持同步/异步处理和优先级排序
- 更新构建脚本,编译server、cli、scheduler三个二进制文件
- 配置systemd服务管理定时任务调度器
- 重构项目结构,新增crontab和hooks目录模块
- 更新README文档,完善各组件使用说明和部署配置
2026-04-15 12:39:59 +08:00

64 lines
1.3 KiB
Go

package main
import (
db "apiServer_service/models/database"
"apiServer_service/utils/logger"
"apiServer_service/utils/nacos"
"fmt"
"os"
"os/signal"
"syscall"
"github.com/cloudwego/hertz/pkg/app/server"
"github.com/joho/godotenv"
)
func init() {
if err := godotenv.Load(".env"); err != nil {
fmt.Println("Warning: .env file not found, using system environment variables")
}
}
func main() {
host := os.Getenv("HOST")
port := os.Getenv("PORT")
if host == "" || port == "" {
logger.Fatal("Config", "HOST 和 PORT 环境变量必须设置")
}
if os.Getenv("DB_TYPE") != "" {
db.ConnectDatabase()
db.Migrate()
}
h := server.Default(
server.WithHostPorts(host+":"+port),
server.WithExitWaitTime(0),
)
SetupRoutes(h)
if os.Getenv("NACOS_SERVICE_NAME") != "" {
if err := nacos.RegisterService(); err != nil {
logger.Warn("Nacos", "服务注册失败: ", err)
} else {
logger.Info("Nacos", "服务注册成功")
}
}
go func() {
h.Spin()
}()
logger.Info("Server", fmt.Sprintf("服务启动于 %s:%s", host, port))
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
logger.Info("Server", "正在关闭服务...")
if err := h.Close(); err != nil {
logger.Error("Server", "关闭失败: ", err)
}
logger.Info("Server", "服务已停止")
}