package admin

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

	reconciliationsvc "github.com/tidbcloud/aisupport/services/jsm-syncer/internal/services/reconciliation"
)

func (h *Handler) ReconcileOrgFullSync(c *gin.Context) {
	h.queueReconciliation(c, reconciliationsvc.ReconciliationJobOrgFullSync)
}

func (h *Handler) ReconcileOrgMembershipSync(c *gin.Context) {
	h.queueReconciliation(c, reconciliationsvc.ReconciliationJobOrgMembershipSync)
}

func (h *Handler) ReconcileOrgMetadataBackfill(c *gin.Context) {
	h.queueReconciliation(c, reconciliationsvc.ReconciliationJobOrgMetadataBackfill)
}

func (h *Handler) ReconcileOrgMetadataRefresh(c *gin.Context) {
	h.queueReconciliation(c, reconciliationsvc.ReconciliationJobOrgMetadataRefresh)
}

func (h *Handler) ReconcileLakeSnapshot(c *gin.Context) {
	h.queueReconciliation(c, reconciliationsvc.ReconciliationJobLakeSnapshot)
}

func (h *Handler) ReconcileTechnicalProjectRole(c *gin.Context) {
	h.queueReconciliation(c, reconciliationsvc.ReconciliationJobTechnicalProjectRole)
}

func (h *Handler) queueReconciliation(c *gin.Context, job reconciliationsvc.ReconciliationJob) {
	status, err := h.reconciliation.QueueReconciliation(job)
	if err != nil {
		fail(c, err)
		return
	}
	accepted(c, &ReconcileJobResponse{
		Job:    string(job),
		Status: string(status),
	})
}
