package healthcheck

import (
	"github.com/gin-gonic/gin"
	"go.uber.org/fx"
)

func registerRouter(r *gin.RouterGroup, s *HealthCheckService) {
	computeEngine := r.Group("/compute-engine")

	// Strategy CRUD
	computeEngine.POST("/:oid/:cid/healthcheck/strategy", s.CreateStrategy)
	computeEngine.GET("/:oid/:cid/healthcheck/strategy", s.ListStrategies)
	computeEngine.GET("/:oid/:cid/healthcheck/strategy/:uuid", s.GetStrategy)
	computeEngine.PUT("/:oid/:cid/healthcheck/strategy/:uuid", s.UpdateStrategy)
	computeEngine.DELETE("/:oid/:cid/healthcheck/strategy/:uuid", s.DeleteStrategy)

	// Trigger health check (runs all enabled items or specified items)
	computeEngine.POST("/:oid/:cid/healthcheck/strategy/:uuid/trigger", s.TriggerCheck)

	// Result List/Detail
	computeEngine.GET("/:oid/:cid/healthcheck/result", s.ListResults)
	computeEngine.GET("/:oid/:cid/healthcheck/result/:uuid", s.GetResult)
	computeEngine.DELETE("/:oid/:cid/healthcheck/result/:uuid", s.DeleteResult)

	// AI Analyze (internal users only)
	// Note: This route is registered under /clinic/api/v1 prefix, not /compute-engine
	r.POST("/healthcheck/ai/analyze", s.AIAnalyze)
}

var Module = fx.Options(
	fx.Provide(NewHealthCheckService),
	fx.Invoke(registerRouter))
