package globalapi

import (
	"github.com/gin-gonic/gin"
)

// CreateIntegrationTask
// @Summary create an integration task
// @Description create an integration task for data processing
// @Tags integrationtask
// @Accept json
// @Produce json
// @Param request body message.CreateIntegrationTaskReq true "create request"
// @Success 202 {object} message.Result{data=message.CreateIntegrationTaskResp}
// @Failure 500 {object} message.Result
// @Router /integrationtasks/ [post]
func CreateIntegrationTask(c *gin.Context) {
	// automatic analysis of routing addresses for forwarding to the regional server
	AutoRouteRegionalServer(c, defaultOptionalParam)
}

// DetailIntegrationTask
// @Summary show detail info of an integration task
// @Description show detail info of an integration task
// @Tags integrationtask
// @Accept json
// @Produce json
// @Param id path string true "integration task id"
// @Param request query message.DetailIntegrationTaskReq true "detail integration task request"
// @Success 200 {object} message.Result{data=message.DetailIntegrationTaskResp}
// @Failure 404 {object} message.Result
// @Failure 500 {object} message.Result
// @Router /integrationtasks/{id} [get]
func DetailIntegrationTask(c *gin.Context) {
	AutoRouteRegionalServer(c, defaultOptionalParam)
}

// DeleteIntegrationTask
// @Summary delete an integration task
// @Description delete an integration task
// @Tags integrationtask
// @Accept json
// @Produce json
// @Param id path string true "integration task id"
// @Param request query message.DeleteIntegrationTaskReq true "delete integration task request"
// @Success 202 {object} message.Result{data=message.DeleteIntegrationTaskResp}
// @Failure 404 {object} message.Result
// @Failure 500 {object} message.Result
// @Router /integrationtasks/{id} [delete]
func DeleteIntegrationTask(c *gin.Context) {
	AutoRouteRegionalServer(c, defaultOptionalParam)
}

// QueryIntegrationTasks
// @Summary query integration tasks
// @Description query integration tasks with filters
// @Tags integrationtask
// @Accept json
// @Produce json
// @Param request query message.QueryIntegrationTasksReq true "query integration tasks request"
// @Success 200 {object} message.Result{data=message.QueryIntegrationTasksResp}
// @Failure 500 {object} message.Result
// @Router /integrationtasks/ [get]
func QueryIntegrationTasks(c *gin.Context) {
	AutoRouteRegionalServer(c, defaultOptionalParam)
}

// UpdateIntegrationTask
// @Summary update an integration task
// @Description update an integration task configuration
// @Tags integrationtask
// @Accept json
// @Produce json
// @Param id path string true "integration task id"
// @Param request body message.UpdateIntegrationTaskReq true "update request"
// @Success 200 {object} message.Result{data=message.UpdateIntegrationTaskResp}
// @Failure 404 {object} message.Result
// @Failure 500 {object} message.Result
// @Router /integrationtasks/{id} [put]
func UpdateIntegrationTask(c *gin.Context) {
	AutoRouteRegionalServer(c, defaultOptionalParam)
}

// CreateIntegrationTaskInternal
// @Summary create an integration task (internal)
// @Description create an integration task for vector agent data processing
// @Tags integrationtask
// @Accept json
// @Produce json
// @Param request body message.CreateIntegrationTaskReq true "create request"
// @Success 202 {object} message.Result{data=message.CreateIntegrationTaskResp}
// @Failure 401 {object} message.Result
// @Failure 500 {object} message.Result
// @Router /internal/clusters/{applicationID}/monitoringPipelines [post]
func CreateIntegrationTaskInternal(c *gin.Context) {
	AutoRouteRegionalServer(c, defaultOptionalParam)
}

// DetailIntegrationTaskInternal
// @Summary show detail info of an integration task (internal)
// @Description show detail info of an integration task for internal services
// @Tags integrationtask
// @Accept json
// @Produce json
// @Param id path string true "integration task id"
// @Param request query message.DetailIntegrationTaskReq true "detail integration task request"
// @Success 200 {object} message.Result{data=message.DetailIntegrationTaskResp}
// @Failure 404 {object} message.Result
// @Failure 500 {object} message.Result
// @Router /internal/monitoringPipelines/{id} [get]
func DetailIntegrationTaskInternal(c *gin.Context) {
	AutoRouteRegionalServer(c, defaultOptionalParam)
}
