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/tracing" 14 "net/http" 15) 16 17// ManagedInstanceLongTermRetentionPoliciesClient is the the Azure SQL Database management API provides a RESTful set 18// of web services that interact with Azure SQL Database services to manage your databases. The API enables you to 19// create, retrieve, update, and delete databases. 20type ManagedInstanceLongTermRetentionPoliciesClient struct { 21 BaseClient 22} 23 24// NewManagedInstanceLongTermRetentionPoliciesClient creates an instance of the 25// ManagedInstanceLongTermRetentionPoliciesClient client. 26func NewManagedInstanceLongTermRetentionPoliciesClient(subscriptionID string) ManagedInstanceLongTermRetentionPoliciesClient { 27 return NewManagedInstanceLongTermRetentionPoliciesClientWithBaseURI(DefaultBaseURI, subscriptionID) 28} 29 30// NewManagedInstanceLongTermRetentionPoliciesClientWithBaseURI creates an instance of the 31// ManagedInstanceLongTermRetentionPoliciesClient client using a custom endpoint. Use this when interacting with an 32// Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 33func NewManagedInstanceLongTermRetentionPoliciesClientWithBaseURI(baseURI string, subscriptionID string) ManagedInstanceLongTermRetentionPoliciesClient { 34 return ManagedInstanceLongTermRetentionPoliciesClient{NewWithBaseURI(baseURI, subscriptionID)} 35} 36 37// CreateOrUpdate sets a managed database's long term retention 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// managedInstanceName - the name of the managed instance. 42// databaseName - the name of the database. 43// parameters - the long term retention policy info. 44func (client ManagedInstanceLongTermRetentionPoliciesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, managedInstanceName string, databaseName string, parameters ManagedInstanceLongTermRetentionPolicy) (result ManagedInstanceLongTermRetentionPoliciesCreateOrUpdateFuture, err error) { 45 if tracing.IsEnabled() { 46 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstanceLongTermRetentionPoliciesClient.CreateOrUpdate") 47 defer func() { 48 sc := -1 49 if result.FutureAPI != nil && result.FutureAPI.Response() != nil { 50 sc = result.FutureAPI.Response().StatusCode 51 } 52 tracing.EndSpan(ctx, sc, err) 53 }() 54 } 55 req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, managedInstanceName, databaseName, parameters) 56 if err != nil { 57 err = autorest.NewErrorWithError(err, "sql.ManagedInstanceLongTermRetentionPoliciesClient", "CreateOrUpdate", nil, "Failure preparing request") 58 return 59 } 60 61 result, err = client.CreateOrUpdateSender(req) 62 if err != nil { 63 err = autorest.NewErrorWithError(err, "sql.ManagedInstanceLongTermRetentionPoliciesClient", "CreateOrUpdate", nil, "Failure sending request") 64 return 65 } 66 67 return 68} 69 70// CreateOrUpdatePreparer prepares the CreateOrUpdate request. 71func (client ManagedInstanceLongTermRetentionPoliciesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, managedInstanceName string, databaseName string, parameters ManagedInstanceLongTermRetentionPolicy) (*http.Request, error) { 72 pathParameters := map[string]interface{}{ 73 "databaseName": autorest.Encode("path", databaseName), 74 "managedInstanceName": autorest.Encode("path", managedInstanceName), 75 "policyName": autorest.Encode("path", "default"), 76 "resourceGroupName": autorest.Encode("path", resourceGroupName), 77 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 78 } 79 80 const APIVersion = "2018-06-01-preview" 81 queryParameters := map[string]interface{}{ 82 "api-version": APIVersion, 83 } 84 85 preparer := autorest.CreatePreparer( 86 autorest.AsContentType("application/json; charset=utf-8"), 87 autorest.AsPut(), 88 autorest.WithBaseURL(client.BaseURI), 89 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/databases/{databaseName}/backupLongTermRetentionPolicies/{policyName}", pathParameters), 90 autorest.WithJSON(parameters), 91 autorest.WithQueryParameters(queryParameters)) 92 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 93} 94 95// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the 96// http.Response Body if it receives an error. 97func (client ManagedInstanceLongTermRetentionPoliciesClient) CreateOrUpdateSender(req *http.Request) (future ManagedInstanceLongTermRetentionPoliciesCreateOrUpdateFuture, err error) { 98 var resp *http.Response 99 resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client)) 100 if err != nil { 101 return 102 } 103 var azf azure.Future 104 azf, err = azure.NewFutureFromResponse(resp) 105 future.FutureAPI = &azf 106 future.Result = future.result 107 return 108} 109 110// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always 111// closes the http.Response Body. 112func (client ManagedInstanceLongTermRetentionPoliciesClient) CreateOrUpdateResponder(resp *http.Response) (result ManagedInstanceLongTermRetentionPolicy, err error) { 113 err = autorest.Respond( 114 resp, 115 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted), 116 autorest.ByUnmarshallingJSON(&result), 117 autorest.ByClosing()) 118 result.Response = autorest.Response{Response: resp} 119 return 120} 121 122// Get gets a managed database's long term retention policy. 123// Parameters: 124// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 125// from the Azure Resource Manager API or the portal. 126// managedInstanceName - the name of the managed instance. 127// databaseName - the name of the database. 128func (client ManagedInstanceLongTermRetentionPoliciesClient) Get(ctx context.Context, resourceGroupName string, managedInstanceName string, databaseName string) (result ManagedInstanceLongTermRetentionPolicy, err error) { 129 if tracing.IsEnabled() { 130 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstanceLongTermRetentionPoliciesClient.Get") 131 defer func() { 132 sc := -1 133 if result.Response.Response != nil { 134 sc = result.Response.Response.StatusCode 135 } 136 tracing.EndSpan(ctx, sc, err) 137 }() 138 } 139 req, err := client.GetPreparer(ctx, resourceGroupName, managedInstanceName, databaseName) 140 if err != nil { 141 err = autorest.NewErrorWithError(err, "sql.ManagedInstanceLongTermRetentionPoliciesClient", "Get", nil, "Failure preparing request") 142 return 143 } 144 145 resp, err := client.GetSender(req) 146 if err != nil { 147 result.Response = autorest.Response{Response: resp} 148 err = autorest.NewErrorWithError(err, "sql.ManagedInstanceLongTermRetentionPoliciesClient", "Get", resp, "Failure sending request") 149 return 150 } 151 152 result, err = client.GetResponder(resp) 153 if err != nil { 154 err = autorest.NewErrorWithError(err, "sql.ManagedInstanceLongTermRetentionPoliciesClient", "Get", resp, "Failure responding to request") 155 return 156 } 157 158 return 159} 160 161// GetPreparer prepares the Get request. 162func (client ManagedInstanceLongTermRetentionPoliciesClient) GetPreparer(ctx context.Context, resourceGroupName string, managedInstanceName string, databaseName string) (*http.Request, error) { 163 pathParameters := map[string]interface{}{ 164 "databaseName": autorest.Encode("path", databaseName), 165 "managedInstanceName": autorest.Encode("path", managedInstanceName), 166 "policyName": autorest.Encode("path", "default"), 167 "resourceGroupName": autorest.Encode("path", resourceGroupName), 168 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 169 } 170 171 const APIVersion = "2018-06-01-preview" 172 queryParameters := map[string]interface{}{ 173 "api-version": APIVersion, 174 } 175 176 preparer := autorest.CreatePreparer( 177 autorest.AsGet(), 178 autorest.WithBaseURL(client.BaseURI), 179 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/databases/{databaseName}/backupLongTermRetentionPolicies/{policyName}", pathParameters), 180 autorest.WithQueryParameters(queryParameters)) 181 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 182} 183 184// GetSender sends the Get request. The method will close the 185// http.Response Body if it receives an error. 186func (client ManagedInstanceLongTermRetentionPoliciesClient) GetSender(req *http.Request) (*http.Response, error) { 187 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 188} 189 190// GetResponder handles the response to the Get request. The method always 191// closes the http.Response Body. 192func (client ManagedInstanceLongTermRetentionPoliciesClient) GetResponder(resp *http.Response) (result ManagedInstanceLongTermRetentionPolicy, err error) { 193 err = autorest.Respond( 194 resp, 195 azure.WithErrorUnlessStatusCode(http.StatusOK), 196 autorest.ByUnmarshallingJSON(&result), 197 autorest.ByClosing()) 198 result.Response = autorest.Response{Response: resp} 199 return 200} 201 202// ListByDatabase gets a database's long term retention policy. 203// Parameters: 204// resourceGroupName - the name of the resource group that contains the resource. You can obtain this value 205// from the Azure Resource Manager API or the portal. 206// managedInstanceName - the name of the managed instance. 207// databaseName - the name of the database. 208func (client ManagedInstanceLongTermRetentionPoliciesClient) ListByDatabase(ctx context.Context, resourceGroupName string, managedInstanceName string, databaseName string) (result ManagedInstanceLongTermRetentionPolicyListResultPage, err error) { 209 if tracing.IsEnabled() { 210 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstanceLongTermRetentionPoliciesClient.ListByDatabase") 211 defer func() { 212 sc := -1 213 if result.miltrplr.Response.Response != nil { 214 sc = result.miltrplr.Response.Response.StatusCode 215 } 216 tracing.EndSpan(ctx, sc, err) 217 }() 218 } 219 result.fn = client.listByDatabaseNextResults 220 req, err := client.ListByDatabasePreparer(ctx, resourceGroupName, managedInstanceName, databaseName) 221 if err != nil { 222 err = autorest.NewErrorWithError(err, "sql.ManagedInstanceLongTermRetentionPoliciesClient", "ListByDatabase", nil, "Failure preparing request") 223 return 224 } 225 226 resp, err := client.ListByDatabaseSender(req) 227 if err != nil { 228 result.miltrplr.Response = autorest.Response{Response: resp} 229 err = autorest.NewErrorWithError(err, "sql.ManagedInstanceLongTermRetentionPoliciesClient", "ListByDatabase", resp, "Failure sending request") 230 return 231 } 232 233 result.miltrplr, err = client.ListByDatabaseResponder(resp) 234 if err != nil { 235 err = autorest.NewErrorWithError(err, "sql.ManagedInstanceLongTermRetentionPoliciesClient", "ListByDatabase", resp, "Failure responding to request") 236 return 237 } 238 if result.miltrplr.hasNextLink() && result.miltrplr.IsEmpty() { 239 err = result.NextWithContext(ctx) 240 return 241 } 242 243 return 244} 245 246// ListByDatabasePreparer prepares the ListByDatabase request. 247func (client ManagedInstanceLongTermRetentionPoliciesClient) ListByDatabasePreparer(ctx context.Context, resourceGroupName string, managedInstanceName string, databaseName string) (*http.Request, error) { 248 pathParameters := map[string]interface{}{ 249 "databaseName": autorest.Encode("path", databaseName), 250 "managedInstanceName": autorest.Encode("path", managedInstanceName), 251 "resourceGroupName": autorest.Encode("path", resourceGroupName), 252 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 253 } 254 255 const APIVersion = "2018-06-01-preview" 256 queryParameters := map[string]interface{}{ 257 "api-version": APIVersion, 258 } 259 260 preparer := autorest.CreatePreparer( 261 autorest.AsGet(), 262 autorest.WithBaseURL(client.BaseURI), 263 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/databases/{databaseName}/backupLongTermRetentionPolicies", pathParameters), 264 autorest.WithQueryParameters(queryParameters)) 265 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 266} 267 268// ListByDatabaseSender sends the ListByDatabase request. The method will close the 269// http.Response Body if it receives an error. 270func (client ManagedInstanceLongTermRetentionPoliciesClient) ListByDatabaseSender(req *http.Request) (*http.Response, error) { 271 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 272} 273 274// ListByDatabaseResponder handles the response to the ListByDatabase request. The method always 275// closes the http.Response Body. 276func (client ManagedInstanceLongTermRetentionPoliciesClient) ListByDatabaseResponder(resp *http.Response) (result ManagedInstanceLongTermRetentionPolicyListResult, err error) { 277 err = autorest.Respond( 278 resp, 279 azure.WithErrorUnlessStatusCode(http.StatusOK), 280 autorest.ByUnmarshallingJSON(&result), 281 autorest.ByClosing()) 282 result.Response = autorest.Response{Response: resp} 283 return 284} 285 286// listByDatabaseNextResults retrieves the next set of results, if any. 287func (client ManagedInstanceLongTermRetentionPoliciesClient) listByDatabaseNextResults(ctx context.Context, lastResults ManagedInstanceLongTermRetentionPolicyListResult) (result ManagedInstanceLongTermRetentionPolicyListResult, err error) { 288 req, err := lastResults.managedInstanceLongTermRetentionPolicyListResultPreparer(ctx) 289 if err != nil { 290 return result, autorest.NewErrorWithError(err, "sql.ManagedInstanceLongTermRetentionPoliciesClient", "listByDatabaseNextResults", nil, "Failure preparing next results request") 291 } 292 if req == nil { 293 return 294 } 295 resp, err := client.ListByDatabaseSender(req) 296 if err != nil { 297 result.Response = autorest.Response{Response: resp} 298 return result, autorest.NewErrorWithError(err, "sql.ManagedInstanceLongTermRetentionPoliciesClient", "listByDatabaseNextResults", resp, "Failure sending next results request") 299 } 300 result, err = client.ListByDatabaseResponder(resp) 301 if err != nil { 302 err = autorest.NewErrorWithError(err, "sql.ManagedInstanceLongTermRetentionPoliciesClient", "listByDatabaseNextResults", resp, "Failure responding to next results request") 303 } 304 return 305} 306 307// ListByDatabaseComplete enumerates all values, automatically crossing page boundaries as required. 308func (client ManagedInstanceLongTermRetentionPoliciesClient) ListByDatabaseComplete(ctx context.Context, resourceGroupName string, managedInstanceName string, databaseName string) (result ManagedInstanceLongTermRetentionPolicyListResultIterator, err error) { 309 if tracing.IsEnabled() { 310 ctx = tracing.StartSpan(ctx, fqdn+"/ManagedInstanceLongTermRetentionPoliciesClient.ListByDatabase") 311 defer func() { 312 sc := -1 313 if result.Response().Response.Response != nil { 314 sc = result.page.Response().Response.Response.StatusCode 315 } 316 tracing.EndSpan(ctx, sc, err) 317 }() 318 } 319 result.page, err = client.ListByDatabase(ctx, resourceGroupName, managedInstanceName, databaseName) 320 return 321} 322