package maintenance

import (
	"context"

	tidbmgmtservicev1 "github.com/tidbcloud/tidb-management-service/api/spec/tidb_mgmt_service/v1"
)

func (s *serverImpl) ListMaintenanceTaskExecutions(
	ctx context.Context,
	req *tidbmgmtservicev1.ListMaintenanceTaskExecutionsRequest,
) (*tidbmgmtservicev1.ListMaintenanceTaskExecutionsResponse, error) {
	ctx, span := tracer.Start(ctx, "ListMaintenanceTaskExecutions")
	defer span.End()

	executions, err := s.mwSvc.ListMaintenanceTaskExecutions(ctx, req)
	if err != nil {
		return nil, err
	}
	return &tidbmgmtservicev1.ListMaintenanceTaskExecutionsResponse{
		MaintenanceTaskExecutions: executions.GetMaintenanceTaskExecutions(),
	}, nil
}

func (s *serverImpl) UpdateMaintenanceTaskExecution(
	ctx context.Context,
	req *tidbmgmtservicev1.UpdateMaintenanceTaskExecutionRequest,
) (*tidbmgmtservicev1.MaintenanceTaskExecution, error) {
	ctx, span := tracer.Start(ctx, "UpdateMaintenanceTaskExecution")
	defer span.End()

	execution, err := s.mwSvc.UpdateMaintenanceTaskExecution(ctx, req)
	if err != nil {
		return nil, err
	}
	return execution, nil
}

func (s *serverImpl) QueryMaintenanceTaskExecutions(
	ctx context.Context,
	req *tidbmgmtservicev1.QueryMaintenanceTaskExecutionsRequest,
) (*tidbmgmtservicev1.QueryMaintenanceTaskExecutionsResponse, error) {
	ctx, span := tracer.Start(ctx, "QueryMaintenanceTaskExecutions")
	defer span.End()

	executions, err := s.mwSvc.QueryMaintenanceTaskExecutions(ctx, req)
	if err != nil {
		return nil, err
	}
	return &tidbmgmtservicev1.QueryMaintenanceTaskExecutionsResponse{
		MaintenanceTaskExecutions: executions.GetMaintenanceTaskExecutions(),
	}, nil
}
