issue_9 #14

Merged
huang merged 11 commits from issue_9 into main 2025-09-25 00:16:50 +08:00
3 changed files with 30 additions and 4 deletions
Showing only changes of commit 3a030f5bca - Show all commits

View File

@@ -8,7 +8,7 @@ app:
# HTTP 服务配置 # HTTP 服务配置
server: server:
port: 8086 port: 8086
mode: "debug" # Gin 运行模式: "debug", "release", "test" mode: "release" # Gin 运行模式: "debug", "release", "test"
# 日志配置 # 日志配置
log: log:
@@ -29,7 +29,7 @@ database:
password: "pig-farm-controller" password: "pig-farm-controller"
dbname: "pig-farm-controller" dbname: "pig-farm-controller"
sslmode: "disable" # 在生产环境中建议使用 "require" sslmode: "disable" # 在生产环境中建议使用 "require"
is_timescaledb: false is_timescaledb: true
max_open_conns: 25 # 最大开放连接数 max_open_conns: 25 # 最大开放连接数
max_idle_conns: 10 # 最大空闲连接数 max_idle_conns: 10 # 最大空闲连接数
conn_max_lifetime: 600 # 连接最大生命周期(秒) conn_max_lifetime: 600 # 连接最大生命周期(秒)

View File

@@ -12,6 +12,7 @@ import (
"context" "context"
"fmt" "fmt"
"net/http" "net/http"
"net/http/pprof"
"time" "time"
"git.huangwc.com/pig/pig-farm-controller/internal/app/controller/device" "git.huangwc.com/pig/pig-farm-controller/internal/app/controller/device"
@@ -99,6 +100,7 @@ func (a *API) setupRoutes() {
userGroup.POST("", a.userController.CreateUser) // 注册创建用户接口 (POST /api/v1/users) userGroup.POST("", a.userController.CreateUser) // 注册创建用户接口 (POST /api/v1/users)
userGroup.POST("/login", a.userController.Login) // 注册用户登录接口 (POST /api/v1/users/login) userGroup.POST("/login", a.userController.Login) // 注册用户登录接口 (POST /api/v1/users/login)
} }
a.logger.Info("用户相关接口注册成功")
// 设备相关路由组 // 设备相关路由组
deviceGroup := v1.Group("/devices") deviceGroup := v1.Group("/devices")
@@ -109,6 +111,7 @@ func (a *API) setupRoutes() {
deviceGroup.PUT("/:id", a.deviceController.UpdateDevice) deviceGroup.PUT("/:id", a.deviceController.UpdateDevice)
deviceGroup.DELETE("/:id", a.deviceController.DeleteDevice) deviceGroup.DELETE("/:id", a.deviceController.DeleteDevice)
} }
a.logger.Info("设备相关接口注册成功")
// 计划相关路由组 // 计划相关路由组
planGroup := v1.Group("/plans") planGroup := v1.Group("/plans")
@@ -121,17 +124,38 @@ func (a *API) setupRoutes() {
planGroup.POST("/:id/start", a.planController.StartPlan) planGroup.POST("/:id/start", a.planController.StartPlan)
planGroup.POST("/:id/stop", a.planController.StopPlan) planGroup.POST("/:id/stop", a.planController.StopPlan)
} }
a.logger.Info("计划相关接口注册成功")
} }
// 注册 pprof 路由
pprofGroup := a.engine.Group("/debug/pprof")
{
pprofGroup.GET("/", gin.WrapF(pprof.Index))
pprofGroup.GET("/cmdline", gin.WrapF(pprof.Cmdline))
pprofGroup.GET("/profile", gin.WrapF(pprof.Profile))
pprofGroup.POST("/symbol", gin.WrapF(pprof.Symbol))
pprofGroup.GET("/symbol", gin.WrapF(pprof.Symbol))
pprofGroup.GET("/trace", gin.WrapF(pprof.Trace))
pprofGroup.GET("/allocs", gin.WrapH(pprof.Handler("allocs")))
pprofGroup.GET("/block", gin.WrapH(pprof.Handler("block")))
pprofGroup.GET("/goroutine", gin.WrapH(pprof.Handler("goroutine")))
pprofGroup.GET("/heap", gin.WrapH(pprof.Handler("heap")))
pprofGroup.GET("/mutex", gin.WrapH(pprof.Handler("mutex")))
pprofGroup.GET("/threadcreate", gin.WrapH(pprof.Handler("threadcreate")))
}
a.logger.Info("pprof 接口注册成功")
// 上行事件监听路由 // 上行事件监听路由
a.engine.POST("/upstream", func(c *gin.Context) { a.engine.POST("/upstream", func(c *gin.Context) {
h := a.listenHandler.Handler() h := a.listenHandler.Handler()
h.ServeHTTP(c.Writer, c.Request) h.ServeHTTP(c.Writer, c.Request)
}) })
a.logger.Info("上行事件监听接口注册成功")
// 添加 Swagger UI 路由 // 添加 Swagger UI 路由, Swagger UI可在 /swagger/index.html 上找到
a.engine.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) a.engine.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
a.logger.Info("Swagger UI is available at /swagger/index.html") a.logger.Info("Swagger UI 接口注册成功")
} }
// Start 启动 HTTP 服务器 // Start 启动 HTTP 服务器

View File

@@ -258,5 +258,7 @@ func initStorage(cfg config.DatabaseConfig, logger *logs.Logger) (database.Stora
if err := storage.Migrate(models.GetAllModels()...); err != nil { if err := storage.Migrate(models.GetAllModels()...); err != nil {
return nil, fmt.Errorf("数据库迁移失败: %w", err) return nil, fmt.Errorf("数据库迁移失败: %w", err)
} }
logger.Info("数据库初始化完成。")
return storage, nil return storage, nil
} }