package managerserver

import (
	"io"
	"net/http"

	cloudv1 "github.com/tidbcloud/infra-api/api/v1"
	"sigs.k8s.io/controller-runtime/pkg/client"
)

func (s *server) importStatus(w http.ResponseWriter, r *http.Request) {
	logger := log.WithName("import/status")
	logger.V(2).Info("req param", "req", r.URL)

	taskID := r.URL.Query().Get("task-id")
	if len(taskID) == 0 {
		logger.V(2).Error(nil, "task-id is required")
		http.Error(w, "task-id is required", http.StatusBadRequest)
		return
	}

	il := &cloudv1.ImportList{}
	if err := s.manager.GetClient().List(r.Context(), il,
		client.MatchingFields{"status.taskId": taskID}); client.IgnoreNotFound(err) != nil {
		logger.Error(err, "list import task error")
		http.Error(w, "failed to list import task", http.StatusInternalServerError)
		return
	}
	if len(il.Items) == 0 {
		logger.V(2).Error(nil, "import task not found")
		http.Error(w, "import task not found", http.StatusNotFound)
		return
	}
	_, _ = io.WriteString(w, string(il.Items[0].Status.Phase))
}
