1package sql 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. See License.txt in the project root for license information. 5// 6// Code generated by Microsoft (R) AutoRest Code Generator. 7// Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9import ( 10 "context" 11 "github.com/Azure/go-autorest/autorest" 12 "github.com/Azure/go-autorest/autorest/azure" 13 "github.com/Azure/go-autorest/autorest/validation" 14 "github.com/Azure/go-autorest/tracing" 15 "net/http" 16) 17 18// GeoBackupPoliciesClient is the the Azure SQL Database management API provides a RESTful set of web services that 19// interact with Azure SQL Database services to manage your databases. The API enables you to create, retrieve, update, 20// and delete databases. 21type GeoBackupPoliciesClient struct { 22 BaseClient 23} 24 25// NewGeoBackupPoliciesClient creates an instance of the GeoBackupPoliciesClient client. 26func NewGeoBackupPoliciesClient(subscriptionID string) GeoBackupPoliciesClient { 27 return NewGeoBackupPoliciesClientWithBaseURI(DefaultBaseURI, subscriptionID) 28} 29 30// NewGeoBackupPoliciesClientWithBaseURI creates an instance of the GeoBackupPoliciesClient client using a custom 31// endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure 32// stack). 33func NewGeoBackupPoliciesClientWithBaseURI(baseURI string, subscriptionID string) GeoBackupPoliciesClient { 34 return GeoBackupPoliciesClient{NewWithBaseURI(baseURI, subscriptionID)} 35} 36 37// CreateOrUpdate updates a database geo backup policy. 38// Parameters: 39// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 40// from the Azure Resource Manager API or the portal. 41// serverName - the name of the server. 42// databaseName - the name of the database. 43// parameters - the required parameters for creating or updating the geo backup policy. 44func (client GeoBackupPoliciesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, serverName string, databaseName string, parameters GeoBackupPolicy) (result GeoBackupPolicy, err error) { 45 if tracing.IsEnabled() { 46 ctx = tracing.StartSpan(ctx, fqdn+"/GeoBackupPoliciesClient.CreateOrUpdate") 47 defer func() { 48 sc := -1 49 if result.Response.Response != nil { 50 sc = result.Response.Response.StatusCode 51 } 52 tracing.EndSpan(ctx, sc, err) 53 }() 54 } 55 if err := validation.Validate([]validation.Validation{ 56 {TargetValue: parameters, 57 Constraints: []validation.Constraint{{Target: "parameters.GeoBackupPolicyProperties", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil { 58 return result, validation.NewError("sql.GeoBackupPoliciesClient", "CreateOrUpdate", err.Error()) 59 } 60 61 req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, serverName, databaseName, parameters) 62 if err != nil { 63 err = autorest.NewErrorWithError(err, "sql.GeoBackupPoliciesClient", "CreateOrUpdate", nil, "Failure preparing request") 64 return 65 } 66 67 resp, err := client.CreateOrUpdateSender(req) 68 if err != nil { 69 result.Response = autorest.Response{Response: resp} 70 err = autorest.NewErrorWithError(err, "sql.GeoBackupPoliciesClient", "CreateOrUpdate", resp, "Failure sending request") 71 return 72 } 73 74 result, err = client.CreateOrUpdateResponder(resp) 75 if err != nil { 76 err = autorest.NewErrorWithError(err, "sql.GeoBackupPoliciesClient", "CreateOrUpdate", resp, "Failure responding to request") 77 return 78 } 79 80 return 81} 82 83// CreateOrUpdatePreparer prepares the CreateOrUpdate request. 84func (client GeoBackupPoliciesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, serverName string, databaseName string, parameters GeoBackupPolicy) (*http.Request, error) { 85 pathParameters := map[string]interface{}{ 86 "databaseName": autorest.Encode("path", databaseName), 87 "geoBackupPolicyName": autorest.Encode("path", "Default"), 88 "resourceGroupName": autorest.Encode("path", resourceGroupName), 89 "serverName": autorest.Encode("path", serverName), 90 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 91 } 92 93 const APIVersion = "2014-04-01" 94 queryParameters := map[string]interface{}{ 95 "api-version": APIVersion, 96 } 97 98 parameters.Kind = nil 99 parameters.Location = nil 100 preparer := autorest.CreatePreparer( 101 autorest.AsContentType("application/json; charset=utf-8"), 102 autorest.AsPut(), 103 autorest.WithBaseURL(client.BaseURI), 104 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/geoBackupPolicies/{geoBackupPolicyName}", pathParameters), 105 autorest.WithJSON(parameters), 106 autorest.WithQueryParameters(queryParameters)) 107 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 108} 109 110// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the 111// http.Response Body if it receives an error. 112func (client GeoBackupPoliciesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { 113 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 114} 115 116// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always 117// closes the http.Response Body. 118func (client GeoBackupPoliciesClient) CreateOrUpdateResponder(resp *http.Response) (result GeoBackupPolicy, err error) { 119 err = autorest.Respond( 120 resp, 121 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), 122 autorest.ByUnmarshallingJSON(&result), 123 autorest.ByClosing()) 124 result.Response = autorest.Response{Response: resp} 125 return 126} 127 128// Get gets a geo backup policy. 129// Parameters: 130// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 131// from the Azure Resource Manager API or the portal. 132// serverName - the name of the server. 133// databaseName - the name of the database. 134func (client GeoBackupPoliciesClient) Get(ctx context.Context, resourceGroupName string, serverName string, databaseName string) (result GeoBackupPolicy, err error) { 135 if tracing.IsEnabled() { 136 ctx = tracing.StartSpan(ctx, fqdn+"/GeoBackupPoliciesClient.Get") 137 defer func() { 138 sc := -1 139 if result.Response.Response != nil { 140 sc = result.Response.Response.StatusCode 141 } 142 tracing.EndSpan(ctx, sc, err) 143 }() 144 } 145 req, err := client.GetPreparer(ctx, resourceGroupName, serverName, databaseName) 146 if err != nil { 147 err = autorest.NewErrorWithError(err, "sql.GeoBackupPoliciesClient", "Get", nil, "Failure preparing request") 148 return 149 } 150 151 resp, err := client.GetSender(req) 152 if err != nil { 153 result.Response = autorest.Response{Response: resp} 154 err = autorest.NewErrorWithError(err, "sql.GeoBackupPoliciesClient", "Get", resp, "Failure sending request") 155 return 156 } 157 158 result, err = client.GetResponder(resp) 159 if err != nil { 160 err = autorest.NewErrorWithError(err, "sql.GeoBackupPoliciesClient", "Get", resp, "Failure responding to request") 161 return 162 } 163 164 return 165} 166 167// GetPreparer prepares the Get request. 168func (client GeoBackupPoliciesClient) GetPreparer(ctx context.Context, resourceGroupName string, serverName string, databaseName string) (*http.Request, error) { 169 pathParameters := map[string]interface{}{ 170 "databaseName": autorest.Encode("path", databaseName), 171 "geoBackupPolicyName": autorest.Encode("path", "Default"), 172 "resourceGroupName": autorest.Encode("path", resourceGroupName), 173 "serverName": autorest.Encode("path", serverName), 174 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 175 } 176 177 const APIVersion = "2014-04-01" 178 queryParameters := map[string]interface{}{ 179 "api-version": APIVersion, 180 } 181 182 preparer := autorest.CreatePreparer( 183 autorest.AsGet(), 184 autorest.WithBaseURL(client.BaseURI), 185 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/geoBackupPolicies/{geoBackupPolicyName}", pathParameters), 186 autorest.WithQueryParameters(queryParameters)) 187 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 188} 189 190// GetSender sends the Get request. The method will close the 191// http.Response Body if it receives an error. 192func (client GeoBackupPoliciesClient) GetSender(req *http.Request) (*http.Response, error) { 193 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 194} 195 196// GetResponder handles the response to the Get request. The method always 197// closes the http.Response Body. 198func (client GeoBackupPoliciesClient) GetResponder(resp *http.Response) (result GeoBackupPolicy, err error) { 199 err = autorest.Respond( 200 resp, 201 azure.WithErrorUnlessStatusCode(http.StatusOK), 202 autorest.ByUnmarshallingJSON(&result), 203 autorest.ByClosing()) 204 result.Response = autorest.Response{Response: resp} 205 return 206} 207 208// ListByDatabase returns a list of geo backup policies. 209// Parameters: 210// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 211// from the Azure Resource Manager API or the portal. 212// serverName - the name of the server. 213// databaseName - the name of the database. 214func (client GeoBackupPoliciesClient) ListByDatabase(ctx context.Context, resourceGroupName string, serverName string, databaseName string) (result GeoBackupPolicyListResult, err error) { 215 if tracing.IsEnabled() { 216 ctx = tracing.StartSpan(ctx, fqdn+"/GeoBackupPoliciesClient.ListByDatabase") 217 defer func() { 218 sc := -1 219 if result.Response.Response != nil { 220 sc = result.Response.Response.StatusCode 221 } 222 tracing.EndSpan(ctx, sc, err) 223 }() 224 } 225 req, err := client.ListByDatabasePreparer(ctx, resourceGroupName, serverName, databaseName) 226 if err != nil { 227 err = autorest.NewErrorWithError(err, "sql.GeoBackupPoliciesClient", "ListByDatabase", nil, "Failure preparing request") 228 return 229 } 230 231 resp, err := client.ListByDatabaseSender(req) 232 if err != nil { 233 result.Response = autorest.Response{Response: resp} 234 err = autorest.NewErrorWithError(err, "sql.GeoBackupPoliciesClient", "ListByDatabase", resp, "Failure sending request") 235 return 236 } 237 238 result, err = client.ListByDatabaseResponder(resp) 239 if err != nil { 240 err = autorest.NewErrorWithError(err, "sql.GeoBackupPoliciesClient", "ListByDatabase", resp, "Failure responding to request") 241 return 242 } 243 244 return 245} 246 247// ListByDatabasePreparer prepares the ListByDatabase request. 248func (client GeoBackupPoliciesClient) ListByDatabasePreparer(ctx context.Context, resourceGroupName string, serverName string, databaseName string) (*http.Request, error) { 249 pathParameters := map[string]interface{}{ 250 "databaseName": autorest.Encode("path", databaseName), 251 "resourceGroupName": autorest.Encode("path", resourceGroupName), 252 "serverName": autorest.Encode("path", serverName), 253 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 254 } 255 256 const APIVersion = "2014-04-01" 257 queryParameters := map[string]interface{}{ 258 "api-version": APIVersion, 259 } 260 261 preparer := autorest.CreatePreparer( 262 autorest.AsGet(), 263 autorest.WithBaseURL(client.BaseURI), 264 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/geoBackupPolicies", pathParameters), 265 autorest.WithQueryParameters(queryParameters)) 266 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 267} 268 269// ListByDatabaseSender sends the ListByDatabase request. The method will close the 270// http.Response Body if it receives an error. 271func (client GeoBackupPoliciesClient) ListByDatabaseSender(req *http.Request) (*http.Response, error) { 272 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 273} 274 275// ListByDatabaseResponder handles the response to the ListByDatabase request. The method always 276// closes the http.Response Body. 277func (client GeoBackupPoliciesClient) ListByDatabaseResponder(resp *http.Response) (result GeoBackupPolicyListResult, err error) { 278 err = autorest.Respond( 279 resp, 280 azure.WithErrorUnlessStatusCode(http.StatusOK), 281 autorest.ByUnmarshallingJSON(&result), 282 autorest.ByClosing()) 283 result.Response = autorest.Response{Response: resp} 284 return 285} 286