package api

import (
	"net/http"

	"github.com/gin-gonic/gin"

	_ "oci-portal/internal/oci" // swagger 注解引用
)

// @Summary  订阅列表
// @Tags     租户配置
// @Param    id path int true "配置 ID"
// @Success  200 {array} oci.SubscriptionInfo
// @Security BearerAuth
// @Router   /api/v1/oci-configs/{id}/subscriptions [get]
func (h *ociConfigHandler) subscriptions(c *gin.Context) {
	id, ok := pathID(c)
	if !ok {
		return
	}
	subs, err := h.svc.Subscriptions(c.Request.Context(), id)
	if err != nil {
		respondError(c, err)
		return
	}
	c.JSON(http.StatusOK, subs)
}

// @Summary  订阅详情
// @Tags     租户配置
// @Param    id path int true "配置 ID"
// @Param    subscriptionId path string true "subscriptionId"
// @Success  200 {object} oci.SubscriptionDetail
// @Security BearerAuth
// @Router   /api/v1/oci-configs/{id}/subscriptions/{subscriptionId} [get]
func (h *ociConfigHandler) subscriptionDetail(c *gin.Context) {
	id, ok := pathID(c)
	if !ok {
		return
	}
	detail, err := h.svc.SubscriptionDetail(c.Request.Context(), id, c.Param("subscriptionId"))
	if err != nil {
		respondError(c, err)
		return
	}
	c.JSON(http.StatusOK, detail)
}

// @Summary  限额服务列表
// @Tags     租户配置
// @Param    id path int true "配置 ID"
// @Success  200 {array} oci.LimitService
// @Security BearerAuth
// @Router   /api/v1/oci-configs/{id}/limits/services [get]
func (h *ociConfigHandler) limitServices(c *gin.Context) {
	id, ok := pathID(c)
	if !ok {
		return
	}
	services, err := h.svc.LimitServices(c.Request.Context(), id, c.Query("region"))
	if err != nil {
		respondError(c, err)
		return
	}
	c.JSON(http.StatusOK, services)
}
