package api

import "context"

var _ AgentControlAPI = &MockAgentControlAPI{}

type MockAgentControlAPI struct {
	CreateK8sAgentFunc  func(ctx context.Context, req *CreateK8sAgentRequest) (*CreateK8sAgentResponse, error)
	DeleteK8sAgentFunc  func(ctx context.Context, req *DeleteK8sAgentRequest) (*DeleteK8sAgentResponse, error)
	ListK8sAgentsFunc   func(ctx context.Context, req *ListK8sAgentsRequest) (*ListK8sAgentsResponse, error)
	GetK8sAgentFunc     func(ctx context.Context, req *GetK8sAgentRequest) (*GetK8sAgentResponse, error)
	CreateTiDBAgentFunc func(ctx context.Context, req *CreateTiDBAgentRequest) (*CreateTiDBAgentResponse, error)
	DeleteTiDBAgentFunc func(ctx context.Context, req *DeleteTiDBAgentRequest) (*DeleteTiDBAgentResponse, error)
	ListTiDBAgentsFunc  func(ctx context.Context, req *ListTiDBAgentsRequest) (*ListTiDBAgentsResponse, error)
	GetTiDBAgentFunc    func(ctx context.Context, req *GetTiDBAgentRequest) (*GetTiDBAgentResponse, error)
	PauseTiDBAgentFunc  func(ctx context.Context, req *PauseTiDBAgentRequest) (*PauseTiDBAgentResponse, error)
	ResumeTiDBAgentFunc func(ctx context.Context, req *ResumeTiDBAgentRequest) (*ResumeTiDBAgentResponse, error)
	ScaleTiDBAgentFunc  func(ctx context.Context, req *ScaleTiDBAgentRequest) (*ScaleTiDBAgentResponse, error)
}

func (m *MockAgentControlAPI) CreateK8sAgent(ctx context.Context, req *CreateK8sAgentRequest) (*CreateK8sAgentResponse, error) {
	if m.CreateK8sAgentFunc != nil {
		return m.CreateK8sAgentFunc(ctx, req)
	}
	return nil, nil
}

func (m *MockAgentControlAPI) DeleteK8sAgent(ctx context.Context, req *DeleteK8sAgentRequest) (*DeleteK8sAgentResponse, error) {
	if m.DeleteK8sAgentFunc != nil {
		return m.DeleteK8sAgentFunc(ctx, req)
	}
	return nil, nil
}

func (m *MockAgentControlAPI) ListK8sAgents(ctx context.Context, req *ListK8sAgentsRequest) (*ListK8sAgentsResponse, error) {
	if m.ListK8sAgentsFunc != nil {
		return m.ListK8sAgentsFunc(ctx, req)
	}
	return nil, nil
}

func (m *MockAgentControlAPI) GetK8sAgent(ctx context.Context, req *GetK8sAgentRequest) (*GetK8sAgentResponse, error) {
	if m.GetK8sAgentFunc != nil {
		return m.GetK8sAgentFunc(ctx, req)
	}
	return nil, nil
}

func (m *MockAgentControlAPI) CreateTiDBAgent(ctx context.Context, req *CreateTiDBAgentRequest) (*CreateTiDBAgentResponse, error) {
	if m.CreateTiDBAgentFunc != nil {
		return m.CreateTiDBAgentFunc(ctx, req)
	}
	return nil, nil
}

func (m *MockAgentControlAPI) DeleteTiDBAgent(ctx context.Context, req *DeleteTiDBAgentRequest) (*DeleteTiDBAgentResponse, error) {
	if m.DeleteTiDBAgentFunc != nil {
		return m.DeleteTiDBAgentFunc(ctx, req)
	}
	return nil, nil
}

func (m *MockAgentControlAPI) ListTiDBAgents(ctx context.Context, req *ListTiDBAgentsRequest) (*ListTiDBAgentsResponse, error) {
	if m.ListTiDBAgentsFunc != nil {
		return m.ListTiDBAgentsFunc(ctx, req)
	}
	return nil, nil
}

func (m *MockAgentControlAPI) GetTiDBAgent(ctx context.Context, req *GetTiDBAgentRequest) (*GetTiDBAgentResponse, error) {
	if m.GetTiDBAgentFunc != nil {
		return m.GetTiDBAgentFunc(ctx, req)
	}
	return nil, nil
}

func (m *MockAgentControlAPI) PauseTiDBAgent(ctx context.Context, req *PauseTiDBAgentRequest) (*PauseTiDBAgentResponse, error) {
	if m.PauseTiDBAgentFunc != nil {
		return m.PauseTiDBAgentFunc(ctx, req)
	}
	return nil, nil
}

func (m *MockAgentControlAPI) ResumeTiDBAgent(ctx context.Context, req *ResumeTiDBAgentRequest) (*ResumeTiDBAgentResponse, error) {
	if m.ResumeTiDBAgentFunc != nil {
		return m.ResumeTiDBAgentFunc(ctx, req)
	}
	return nil, nil
}

func (m *MockAgentControlAPI) ScaleTiDBAgent(ctx context.Context, req *ScaleTiDBAgentRequest) (*ScaleTiDBAgentResponse, error) {
	if m.ScaleTiDBAgentFunc != nil {
		return m.ScaleTiDBAgentFunc(ctx, req)
	}
	return nil, nil
}
