package api

import (
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/pingcap/dbaas/admin/forms"
	"github.com/pingcap/dbaas/central/db/entity"
	"github.com/pingcap/dbaas/central/model/tenant"
	"github.com/tidbcloud/pkgv2/log"
)

// @Summary Delete Tenant Project
// @tags TenantProject
// @Accept  json
// @Produce json
// @Param org_id path string true "org_id"
// @Param project_id path string true "project_id"
// @Success 200 {object} forms.EmptyResponse
// @Router /orgs/{org_id}/projects/{project_id} [delete]
func DeleteProject(c *gin.Context) {
	req := forms.GetOrgIDAndProjectIDReq{}
	if err := c.ShouldBindUri(&req); err != nil {
		Fail(c, err, http.StatusBadRequest)
		return
	}

	err := tenant.DeleteProject(c.Request.Context(), entity.ID(req.OrgID), entity.ID(req.ProjectID))
	if err != nil {
		log.Error(c.Request.Context(), "failed to delete project")
		Fail(c, err, http.StatusInternalServerError)
		return
	}

	Success(c, nil, http.StatusOK)
}
