package health

import (
	"context"

	"git.huangwc.com/pig/pig-farm-controller/internal/app/controller"

	"github.com/labstack/echo/v4"
)

// Controller 结构体定义了健康检查控制器及其依赖。
type Controller struct {
	ctx context.Context
}

// NewController 创建并返回一个新的健康检查控制器实例。
func NewController(ctx context.Context) *Controller {
	return &Controller{
		ctx: ctx,
	}
}

// Healthz 是一个简单的健康检查端点，用于存活探针 (Liveness Probe)。
// 它也适用于 Docker 的 HEALTHCHECK 指令。
// @Summary      服务存活检查
// @Description  检查服务进程是否运行正常，只要服务能响应就返回 200 OK。
// @Tags         健康检查
// @Produce      json
// @Success      200  {object}  controller.Response  "服务存活"
// @Router       /healthz [get]
func (c *Controller) Healthz(ctx echo.Context) error {
	// 使用项目统一的响应函数，不记录日志
	return controller.SendResponse(ctx, controller.CodeSuccess, "服务存活", nil)
}

// Readyz 是一个简单的就绪检查端点，用于就绪探针 (Readiness Probe)。
// @Summary      服务就绪检查
// @Description  检查服务是否已准备好接收流量。当前实现为只要服务能响应即代表就绪。
// @Tags         健康检查
// @Produce      json
// @Success      200  {object}  controller.Response  "服务已就绪"
// @Router       /readyz [get]
func (c *Controller) Readyz(ctx echo.Context) error {
	// TODO: 在未来，这里应该检查所有关键依赖（如数据库、外部服务）的可用性。
	// 使用项目统一的响应函数，不记录日志
	return controller.SendResponse(ctx, controller.CodeSuccess, "服务已就绪", nil)
}
