package mysqlflexibleserversapi

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

import (
	"context"
	"github.com/Azure/azure-sdk-for-go/services/preview/mysql/mgmt/2020-07-01-preview/mysqlflexibleservers"
)

// ServersClientAPI contains the set of methods on the ServersClient type.
type ServersClientAPI interface {
	Create(ctx context.Context, resourceGroupName string, serverName string, parameters mysqlflexibleservers.Server) (result mysqlflexibleservers.ServersCreateFuture, err error)
	Delete(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.ServersDeleteFuture, err error)
	Get(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.Server, err error)
	List(ctx context.Context) (result mysqlflexibleservers.ServerListResultPage, err error)
	ListComplete(ctx context.Context) (result mysqlflexibleservers.ServerListResultIterator, err error)
	ListByResourceGroup(ctx context.Context, resourceGroupName string) (result mysqlflexibleservers.ServerListResultPage, err error)
	ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result mysqlflexibleservers.ServerListResultIterator, err error)
	Restart(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.ServersRestartFuture, err error)
	Start(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.ServersStartFuture, err error)
	Stop(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.ServersStopFuture, err error)
	Update(ctx context.Context, resourceGroupName string, serverName string, parameters mysqlflexibleservers.ServerForUpdate) (result mysqlflexibleservers.ServersUpdateFuture, err error)
}

var _ ServersClientAPI = (*mysqlflexibleservers.ServersClient)(nil)

// ReplicasClientAPI contains the set of methods on the ReplicasClient type.
type ReplicasClientAPI interface {
	ListByServer(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.ServerListResultPage, err error)
	ListByServerComplete(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.ServerListResultIterator, err error)
}

var _ ReplicasClientAPI = (*mysqlflexibleservers.ReplicasClient)(nil)

// ServerKeysClientAPI contains the set of methods on the ServerKeysClient type.
type ServerKeysClientAPI interface {
	CreateOrUpdate(ctx context.Context, resourceGroupName string, serverName string, keyName string, parameters mysqlflexibleservers.ServerKey) (result mysqlflexibleservers.ServerKeysCreateOrUpdateFuture, err error)
	Delete(ctx context.Context, resourceGroupName string, serverName string, keyName string) (result mysqlflexibleservers.ServerKeysDeleteFuture, err error)
	Get(ctx context.Context, resourceGroupName string, serverName string, keyName string) (result mysqlflexibleservers.ServerKey, err error)
	ListByServer(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.ServerKeyListResultPage, err error)
	ListByServerComplete(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.ServerKeyListResultIterator, err error)
}

var _ ServerKeysClientAPI = (*mysqlflexibleservers.ServerKeysClient)(nil)

// FirewallRulesClientAPI contains the set of methods on the FirewallRulesClient type.
type FirewallRulesClientAPI interface {
	CreateOrUpdate(ctx context.Context, resourceGroupName string, serverName string, firewallRuleName string, parameters mysqlflexibleservers.FirewallRule) (result mysqlflexibleservers.FirewallRulesCreateOrUpdateFuture, err error)
	Delete(ctx context.Context, resourceGroupName string, serverName string, firewallRuleName string) (result mysqlflexibleservers.FirewallRulesDeleteFuture, err error)
	Get(ctx context.Context, resourceGroupName string, serverName string, firewallRuleName string) (result mysqlflexibleservers.FirewallRule, err error)
	ListByServer(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.FirewallRuleListResultPage, err error)
	ListByServerComplete(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.FirewallRuleListResultIterator, err error)
}

var _ FirewallRulesClientAPI = (*mysqlflexibleservers.FirewallRulesClient)(nil)

// DatabasesClientAPI contains the set of methods on the DatabasesClient type.
type DatabasesClientAPI interface {
	CreateOrUpdate(ctx context.Context, resourceGroupName string, serverName string, databaseName string, parameters mysqlflexibleservers.Database) (result mysqlflexibleservers.DatabasesCreateOrUpdateFuture, err error)
	Delete(ctx context.Context, resourceGroupName string, serverName string, databaseName string) (result mysqlflexibleservers.DatabasesDeleteFuture, err error)
	Get(ctx context.Context, resourceGroupName string, serverName string, databaseName string) (result mysqlflexibleservers.Database, err error)
	ListByServer(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.DatabaseListResultPage, err error)
	ListByServerComplete(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.DatabaseListResultIterator, err error)
}

var _ DatabasesClientAPI = (*mysqlflexibleservers.DatabasesClient)(nil)

// ConfigurationsClientAPI contains the set of methods on the ConfigurationsClient type.
type ConfigurationsClientAPI interface {
	Get(ctx context.Context, resourceGroupName string, serverName string, configurationName string) (result mysqlflexibleservers.Configuration, err error)
	ListByServer(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.ConfigurationListResultPage, err error)
	ListByServerComplete(ctx context.Context, resourceGroupName string, serverName string) (result mysqlflexibleservers.ConfigurationListResultIterator, err error)
	Update(ctx context.Context, resourceGroupName string, serverName string, configurationName string, parameters mysqlflexibleservers.Configuration) (result mysqlflexibleservers.ConfigurationsUpdateFuture, err error)
}

var _ ConfigurationsClientAPI = (*mysqlflexibleservers.ConfigurationsClient)(nil)

// LocationBasedCapabilitiesClientAPI contains the set of methods on the LocationBasedCapabilitiesClient type.
type LocationBasedCapabilitiesClientAPI interface {
	List(ctx context.Context, locationName string) (result mysqlflexibleservers.CapabilitiesListResultPage, err error)
	ListComplete(ctx context.Context, locationName string) (result mysqlflexibleservers.CapabilitiesListResultIterator, err error)
}

var _ LocationBasedCapabilitiesClientAPI = (*mysqlflexibleservers.LocationBasedCapabilitiesClient)(nil)

// CheckVirtualNetworkSubnetUsageClientAPI contains the set of methods on the CheckVirtualNetworkSubnetUsageClient type.
type CheckVirtualNetworkSubnetUsageClientAPI interface {
	Execute(ctx context.Context, locationName string, parameters mysqlflexibleservers.VirtualNetworkSubnetUsageParameter) (result mysqlflexibleservers.VirtualNetworkSubnetUsageResult, err error)
}

var _ CheckVirtualNetworkSubnetUsageClientAPI = (*mysqlflexibleservers.CheckVirtualNetworkSubnetUsageClient)(nil)

// CheckNameAvailabilityClientAPI contains the set of methods on the CheckNameAvailabilityClient type.
type CheckNameAvailabilityClientAPI interface {
	Execute(ctx context.Context, nameAvailabilityRequest mysqlflexibleservers.NameAvailabilityRequest) (result mysqlflexibleservers.NameAvailability, err error)
}

var _ CheckNameAvailabilityClientAPI = (*mysqlflexibleservers.CheckNameAvailabilityClient)(nil)

// OperationsClientAPI contains the set of methods on the OperationsClient type.
type OperationsClientAPI interface {
	List(ctx context.Context) (result mysqlflexibleservers.OperationListResult, err error)
}

var _ OperationsClientAPI = (*mysqlflexibleservers.OperationsClient)(nil)
