aa9f892a32
- 新增数据库配置项(DB_TYPE, DB_HOST, DB_PORT等),支持MySQL和PostgreSQL - 集成GORM实现数据库连接和自动迁移功能 - 添加定时任务调度器(cmd/scheduler),基于robfig/cron实现秒级调度 - 实现事件Hook体系,支持同步/异步处理和优先级排序 - 更新构建脚本,编译server、cli、scheduler三个二进制文件 - 配置systemd服务管理定时任务调度器 - 重构项目结构,新增crontab和hooks目录模块 - 更新README文档,完善各组件使用说明和部署配置
64 lines
1.3 KiB
Go
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", "服务已停止")
|
|
}
|