1package kusto
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// DataConnectionsClient is the the Azure Kusto management API provides a RESTful set of web services that interact
19// with Azure Kusto services to manage your clusters and databases. The API enables you to create, update, and delete
20// clusters and databases.
21type DataConnectionsClient struct {
22	BaseClient
23}
24
25// NewDataConnectionsClient creates an instance of the DataConnectionsClient client.
26func NewDataConnectionsClient(subscriptionID string) DataConnectionsClient {
27	return NewDataConnectionsClientWithBaseURI(DefaultBaseURI, subscriptionID)
28}
29
30// NewDataConnectionsClientWithBaseURI creates an instance of the DataConnectionsClient client using a custom endpoint.
31// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).
32func NewDataConnectionsClientWithBaseURI(baseURI string, subscriptionID string) DataConnectionsClient {
33	return DataConnectionsClient{NewWithBaseURI(baseURI, subscriptionID)}
34}
35
36// CheckNameAvailability checks that the data connection name is valid and is not already in use.
37// Parameters:
38// resourceGroupName - the name of the resource group containing the Kusto cluster.
39// clusterName - the name of the Kusto cluster.
40// databaseName - the name of the database in the Kusto cluster.
41// dataConnectionName - the name of the data connection.
42func (client DataConnectionsClient) CheckNameAvailability(ctx context.Context, resourceGroupName string, clusterName string, databaseName string, dataConnectionName DataConnectionCheckNameRequest) (result CheckNameResult, err error) {
43	if tracing.IsEnabled() {
44		ctx = tracing.StartSpan(ctx, fqdn+"/DataConnectionsClient.CheckNameAvailability")
45		defer func() {
46			sc := -1
47			if result.Response.Response != nil {
48				sc = result.Response.Response.StatusCode
49			}
50			tracing.EndSpan(ctx, sc, err)
51		}()
52	}
53	if err := validation.Validate([]validation.Validation{
54		{TargetValue: dataConnectionName,
55			Constraints: []validation.Constraint{{Target: "dataConnectionName.Name", Name: validation.Null, Rule: true, Chain: nil},
56				{Target: "dataConnectionName.Type", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
57		return result, validation.NewError("kusto.DataConnectionsClient", "CheckNameAvailability", err.Error())
58	}
59
60	req, err := client.CheckNameAvailabilityPreparer(ctx, resourceGroupName, clusterName, databaseName, dataConnectionName)
61	if err != nil {
62		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "CheckNameAvailability", nil, "Failure preparing request")
63		return
64	}
65
66	resp, err := client.CheckNameAvailabilitySender(req)
67	if err != nil {
68		result.Response = autorest.Response{Response: resp}
69		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "CheckNameAvailability", resp, "Failure sending request")
70		return
71	}
72
73	result, err = client.CheckNameAvailabilityResponder(resp)
74	if err != nil {
75		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "CheckNameAvailability", resp, "Failure responding to request")
76		return
77	}
78
79	return
80}
81
82// CheckNameAvailabilityPreparer prepares the CheckNameAvailability request.
83func (client DataConnectionsClient) CheckNameAvailabilityPreparer(ctx context.Context, resourceGroupName string, clusterName string, databaseName string, dataConnectionName DataConnectionCheckNameRequest) (*http.Request, error) {
84	pathParameters := map[string]interface{}{
85		"clusterName":       autorest.Encode("path", clusterName),
86		"databaseName":      autorest.Encode("path", databaseName),
87		"resourceGroupName": autorest.Encode("path", resourceGroupName),
88		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
89	}
90
91	const APIVersion = "2020-09-18"
92	queryParameters := map[string]interface{}{
93		"api-version": APIVersion,
94	}
95
96	preparer := autorest.CreatePreparer(
97		autorest.AsContentType("application/json; charset=utf-8"),
98		autorest.AsPost(),
99		autorest.WithBaseURL(client.BaseURI),
100		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/checkNameAvailability", pathParameters),
101		autorest.WithJSON(dataConnectionName),
102		autorest.WithQueryParameters(queryParameters))
103	return preparer.Prepare((&http.Request{}).WithContext(ctx))
104}
105
106// CheckNameAvailabilitySender sends the CheckNameAvailability request. The method will close the
107// http.Response Body if it receives an error.
108func (client DataConnectionsClient) CheckNameAvailabilitySender(req *http.Request) (*http.Response, error) {
109	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
110}
111
112// CheckNameAvailabilityResponder handles the response to the CheckNameAvailability request. The method always
113// closes the http.Response Body.
114func (client DataConnectionsClient) CheckNameAvailabilityResponder(resp *http.Response) (result CheckNameResult, err error) {
115	err = autorest.Respond(
116		resp,
117		azure.WithErrorUnlessStatusCode(http.StatusOK),
118		autorest.ByUnmarshallingJSON(&result),
119		autorest.ByClosing())
120	result.Response = autorest.Response{Response: resp}
121	return
122}
123
124// CreateOrUpdate creates or updates a data connection.
125// Parameters:
126// resourceGroupName - the name of the resource group containing the Kusto cluster.
127// clusterName - the name of the Kusto cluster.
128// databaseName - the name of the database in the Kusto cluster.
129// dataConnectionName - the name of the data connection.
130// parameters - the data connection parameters supplied to the CreateOrUpdate operation.
131func (client DataConnectionsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, clusterName string, databaseName string, dataConnectionName string, parameters BasicDataConnection) (result DataConnectionsCreateOrUpdateFuture, err error) {
132	if tracing.IsEnabled() {
133		ctx = tracing.StartSpan(ctx, fqdn+"/DataConnectionsClient.CreateOrUpdate")
134		defer func() {
135			sc := -1
136			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
137				sc = result.FutureAPI.Response().StatusCode
138			}
139			tracing.EndSpan(ctx, sc, err)
140		}()
141	}
142	req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, clusterName, databaseName, dataConnectionName, parameters)
143	if err != nil {
144		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "CreateOrUpdate", nil, "Failure preparing request")
145		return
146	}
147
148	result, err = client.CreateOrUpdateSender(req)
149	if err != nil {
150		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "CreateOrUpdate", nil, "Failure sending request")
151		return
152	}
153
154	return
155}
156
157// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
158func (client DataConnectionsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, clusterName string, databaseName string, dataConnectionName string, parameters BasicDataConnection) (*http.Request, error) {
159	pathParameters := map[string]interface{}{
160		"clusterName":        autorest.Encode("path", clusterName),
161		"databaseName":       autorest.Encode("path", databaseName),
162		"dataConnectionName": autorest.Encode("path", dataConnectionName),
163		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
164		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
165	}
166
167	const APIVersion = "2020-09-18"
168	queryParameters := map[string]interface{}{
169		"api-version": APIVersion,
170	}
171
172	preparer := autorest.CreatePreparer(
173		autorest.AsContentType("application/json; charset=utf-8"),
174		autorest.AsPut(),
175		autorest.WithBaseURL(client.BaseURI),
176		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}", pathParameters),
177		autorest.WithJSON(parameters),
178		autorest.WithQueryParameters(queryParameters))
179	return preparer.Prepare((&http.Request{}).WithContext(ctx))
180}
181
182// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
183// http.Response Body if it receives an error.
184func (client DataConnectionsClient) CreateOrUpdateSender(req *http.Request) (future DataConnectionsCreateOrUpdateFuture, err error) {
185	var resp *http.Response
186	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
187	if err != nil {
188		return
189	}
190	var azf azure.Future
191	azf, err = azure.NewFutureFromResponse(resp)
192	future.FutureAPI = &azf
193	future.Result = future.result
194	return
195}
196
197// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
198// closes the http.Response Body.
199func (client DataConnectionsClient) CreateOrUpdateResponder(resp *http.Response) (result DataConnectionModel, err error) {
200	err = autorest.Respond(
201		resp,
202		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated, http.StatusAccepted),
203		autorest.ByUnmarshallingJSON(&result),
204		autorest.ByClosing())
205	result.Response = autorest.Response{Response: resp}
206	return
207}
208
209// DataConnectionValidationMethod checks that the data connection parameters are valid.
210// Parameters:
211// resourceGroupName - the name of the resource group containing the Kusto cluster.
212// clusterName - the name of the Kusto cluster.
213// databaseName - the name of the database in the Kusto cluster.
214// parameters - the data connection parameters supplied to the CreateOrUpdate operation.
215func (client DataConnectionsClient) DataConnectionValidationMethod(ctx context.Context, resourceGroupName string, clusterName string, databaseName string, parameters DataConnectionValidation) (result DataConnectionsDataConnectionValidationMethodFuture, err error) {
216	if tracing.IsEnabled() {
217		ctx = tracing.StartSpan(ctx, fqdn+"/DataConnectionsClient.DataConnectionValidationMethod")
218		defer func() {
219			sc := -1
220			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
221				sc = result.FutureAPI.Response().StatusCode
222			}
223			tracing.EndSpan(ctx, sc, err)
224		}()
225	}
226	req, err := client.DataConnectionValidationMethodPreparer(ctx, resourceGroupName, clusterName, databaseName, parameters)
227	if err != nil {
228		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "DataConnectionValidationMethod", nil, "Failure preparing request")
229		return
230	}
231
232	result, err = client.DataConnectionValidationMethodSender(req)
233	if err != nil {
234		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "DataConnectionValidationMethod", nil, "Failure sending request")
235		return
236	}
237
238	return
239}
240
241// DataConnectionValidationMethodPreparer prepares the DataConnectionValidationMethod request.
242func (client DataConnectionsClient) DataConnectionValidationMethodPreparer(ctx context.Context, resourceGroupName string, clusterName string, databaseName string, parameters DataConnectionValidation) (*http.Request, error) {
243	pathParameters := map[string]interface{}{
244		"clusterName":       autorest.Encode("path", clusterName),
245		"databaseName":      autorest.Encode("path", databaseName),
246		"resourceGroupName": autorest.Encode("path", resourceGroupName),
247		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
248	}
249
250	const APIVersion = "2020-09-18"
251	queryParameters := map[string]interface{}{
252		"api-version": APIVersion,
253	}
254
255	preparer := autorest.CreatePreparer(
256		autorest.AsContentType("application/json; charset=utf-8"),
257		autorest.AsPost(),
258		autorest.WithBaseURL(client.BaseURI),
259		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnectionValidation", pathParameters),
260		autorest.WithJSON(parameters),
261		autorest.WithQueryParameters(queryParameters))
262	return preparer.Prepare((&http.Request{}).WithContext(ctx))
263}
264
265// DataConnectionValidationMethodSender sends the DataConnectionValidationMethod request. The method will close the
266// http.Response Body if it receives an error.
267func (client DataConnectionsClient) DataConnectionValidationMethodSender(req *http.Request) (future DataConnectionsDataConnectionValidationMethodFuture, err error) {
268	var resp *http.Response
269	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
270	if err != nil {
271		return
272	}
273	var azf azure.Future
274	azf, err = azure.NewFutureFromResponse(resp)
275	future.FutureAPI = &azf
276	future.Result = future.result
277	return
278}
279
280// DataConnectionValidationMethodResponder handles the response to the DataConnectionValidationMethod request. The method always
281// closes the http.Response Body.
282func (client DataConnectionsClient) DataConnectionValidationMethodResponder(resp *http.Response) (result DataConnectionValidationListResult, err error) {
283	err = autorest.Respond(
284		resp,
285		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
286		autorest.ByUnmarshallingJSON(&result),
287		autorest.ByClosing())
288	result.Response = autorest.Response{Response: resp}
289	return
290}
291
292// Delete deletes the data connection with the given name.
293// Parameters:
294// resourceGroupName - the name of the resource group containing the Kusto cluster.
295// clusterName - the name of the Kusto cluster.
296// databaseName - the name of the database in the Kusto cluster.
297// dataConnectionName - the name of the data connection.
298func (client DataConnectionsClient) Delete(ctx context.Context, resourceGroupName string, clusterName string, databaseName string, dataConnectionName string) (result DataConnectionsDeleteFuture, err error) {
299	if tracing.IsEnabled() {
300		ctx = tracing.StartSpan(ctx, fqdn+"/DataConnectionsClient.Delete")
301		defer func() {
302			sc := -1
303			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
304				sc = result.FutureAPI.Response().StatusCode
305			}
306			tracing.EndSpan(ctx, sc, err)
307		}()
308	}
309	req, err := client.DeletePreparer(ctx, resourceGroupName, clusterName, databaseName, dataConnectionName)
310	if err != nil {
311		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "Delete", nil, "Failure preparing request")
312		return
313	}
314
315	result, err = client.DeleteSender(req)
316	if err != nil {
317		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "Delete", nil, "Failure sending request")
318		return
319	}
320
321	return
322}
323
324// DeletePreparer prepares the Delete request.
325func (client DataConnectionsClient) DeletePreparer(ctx context.Context, resourceGroupName string, clusterName string, databaseName string, dataConnectionName string) (*http.Request, error) {
326	pathParameters := map[string]interface{}{
327		"clusterName":        autorest.Encode("path", clusterName),
328		"databaseName":       autorest.Encode("path", databaseName),
329		"dataConnectionName": autorest.Encode("path", dataConnectionName),
330		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
331		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
332	}
333
334	const APIVersion = "2020-09-18"
335	queryParameters := map[string]interface{}{
336		"api-version": APIVersion,
337	}
338
339	preparer := autorest.CreatePreparer(
340		autorest.AsDelete(),
341		autorest.WithBaseURL(client.BaseURI),
342		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}", pathParameters),
343		autorest.WithQueryParameters(queryParameters))
344	return preparer.Prepare((&http.Request{}).WithContext(ctx))
345}
346
347// DeleteSender sends the Delete request. The method will close the
348// http.Response Body if it receives an error.
349func (client DataConnectionsClient) DeleteSender(req *http.Request) (future DataConnectionsDeleteFuture, err error) {
350	var resp *http.Response
351	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
352	if err != nil {
353		return
354	}
355	var azf azure.Future
356	azf, err = azure.NewFutureFromResponse(resp)
357	future.FutureAPI = &azf
358	future.Result = future.result
359	return
360}
361
362// DeleteResponder handles the response to the Delete request. The method always
363// closes the http.Response Body.
364func (client DataConnectionsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
365	err = autorest.Respond(
366		resp,
367		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
368		autorest.ByClosing())
369	result.Response = resp
370	return
371}
372
373// Get returns a data connection.
374// Parameters:
375// resourceGroupName - the name of the resource group containing the Kusto cluster.
376// clusterName - the name of the Kusto cluster.
377// databaseName - the name of the database in the Kusto cluster.
378// dataConnectionName - the name of the data connection.
379func (client DataConnectionsClient) Get(ctx context.Context, resourceGroupName string, clusterName string, databaseName string, dataConnectionName string) (result DataConnectionModel, err error) {
380	if tracing.IsEnabled() {
381		ctx = tracing.StartSpan(ctx, fqdn+"/DataConnectionsClient.Get")
382		defer func() {
383			sc := -1
384			if result.Response.Response != nil {
385				sc = result.Response.Response.StatusCode
386			}
387			tracing.EndSpan(ctx, sc, err)
388		}()
389	}
390	req, err := client.GetPreparer(ctx, resourceGroupName, clusterName, databaseName, dataConnectionName)
391	if err != nil {
392		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "Get", nil, "Failure preparing request")
393		return
394	}
395
396	resp, err := client.GetSender(req)
397	if err != nil {
398		result.Response = autorest.Response{Response: resp}
399		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "Get", resp, "Failure sending request")
400		return
401	}
402
403	result, err = client.GetResponder(resp)
404	if err != nil {
405		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "Get", resp, "Failure responding to request")
406		return
407	}
408
409	return
410}
411
412// GetPreparer prepares the Get request.
413func (client DataConnectionsClient) GetPreparer(ctx context.Context, resourceGroupName string, clusterName string, databaseName string, dataConnectionName string) (*http.Request, error) {
414	pathParameters := map[string]interface{}{
415		"clusterName":        autorest.Encode("path", clusterName),
416		"databaseName":       autorest.Encode("path", databaseName),
417		"dataConnectionName": autorest.Encode("path", dataConnectionName),
418		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
419		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
420	}
421
422	const APIVersion = "2020-09-18"
423	queryParameters := map[string]interface{}{
424		"api-version": APIVersion,
425	}
426
427	preparer := autorest.CreatePreparer(
428		autorest.AsGet(),
429		autorest.WithBaseURL(client.BaseURI),
430		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}", pathParameters),
431		autorest.WithQueryParameters(queryParameters))
432	return preparer.Prepare((&http.Request{}).WithContext(ctx))
433}
434
435// GetSender sends the Get request. The method will close the
436// http.Response Body if it receives an error.
437func (client DataConnectionsClient) GetSender(req *http.Request) (*http.Response, error) {
438	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
439}
440
441// GetResponder handles the response to the Get request. The method always
442// closes the http.Response Body.
443func (client DataConnectionsClient) GetResponder(resp *http.Response) (result DataConnectionModel, err error) {
444	err = autorest.Respond(
445		resp,
446		azure.WithErrorUnlessStatusCode(http.StatusOK),
447		autorest.ByUnmarshallingJSON(&result),
448		autorest.ByClosing())
449	result.Response = autorest.Response{Response: resp}
450	return
451}
452
453// ListByDatabase returns the list of data connections of the given Kusto database.
454// Parameters:
455// resourceGroupName - the name of the resource group containing the Kusto cluster.
456// clusterName - the name of the Kusto cluster.
457// databaseName - the name of the database in the Kusto cluster.
458func (client DataConnectionsClient) ListByDatabase(ctx context.Context, resourceGroupName string, clusterName string, databaseName string) (result DataConnectionListResult, err error) {
459	if tracing.IsEnabled() {
460		ctx = tracing.StartSpan(ctx, fqdn+"/DataConnectionsClient.ListByDatabase")
461		defer func() {
462			sc := -1
463			if result.Response.Response != nil {
464				sc = result.Response.Response.StatusCode
465			}
466			tracing.EndSpan(ctx, sc, err)
467		}()
468	}
469	req, err := client.ListByDatabasePreparer(ctx, resourceGroupName, clusterName, databaseName)
470	if err != nil {
471		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "ListByDatabase", nil, "Failure preparing request")
472		return
473	}
474
475	resp, err := client.ListByDatabaseSender(req)
476	if err != nil {
477		result.Response = autorest.Response{Response: resp}
478		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "ListByDatabase", resp, "Failure sending request")
479		return
480	}
481
482	result, err = client.ListByDatabaseResponder(resp)
483	if err != nil {
484		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "ListByDatabase", resp, "Failure responding to request")
485		return
486	}
487
488	return
489}
490
491// ListByDatabasePreparer prepares the ListByDatabase request.
492func (client DataConnectionsClient) ListByDatabasePreparer(ctx context.Context, resourceGroupName string, clusterName string, databaseName string) (*http.Request, error) {
493	pathParameters := map[string]interface{}{
494		"clusterName":       autorest.Encode("path", clusterName),
495		"databaseName":      autorest.Encode("path", databaseName),
496		"resourceGroupName": autorest.Encode("path", resourceGroupName),
497		"subscriptionId":    autorest.Encode("path", client.SubscriptionID),
498	}
499
500	const APIVersion = "2020-09-18"
501	queryParameters := map[string]interface{}{
502		"api-version": APIVersion,
503	}
504
505	preparer := autorest.CreatePreparer(
506		autorest.AsGet(),
507		autorest.WithBaseURL(client.BaseURI),
508		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections", pathParameters),
509		autorest.WithQueryParameters(queryParameters))
510	return preparer.Prepare((&http.Request{}).WithContext(ctx))
511}
512
513// ListByDatabaseSender sends the ListByDatabase request. The method will close the
514// http.Response Body if it receives an error.
515func (client DataConnectionsClient) ListByDatabaseSender(req *http.Request) (*http.Response, error) {
516	return client.Send(req, azure.DoRetryWithRegistration(client.Client))
517}
518
519// ListByDatabaseResponder handles the response to the ListByDatabase request. The method always
520// closes the http.Response Body.
521func (client DataConnectionsClient) ListByDatabaseResponder(resp *http.Response) (result DataConnectionListResult, err error) {
522	err = autorest.Respond(
523		resp,
524		azure.WithErrorUnlessStatusCode(http.StatusOK),
525		autorest.ByUnmarshallingJSON(&result),
526		autorest.ByClosing())
527	result.Response = autorest.Response{Response: resp}
528	return
529}
530
531// Update updates a data connection.
532// Parameters:
533// resourceGroupName - the name of the resource group containing the Kusto cluster.
534// clusterName - the name of the Kusto cluster.
535// databaseName - the name of the database in the Kusto cluster.
536// dataConnectionName - the name of the data connection.
537// parameters - the data connection parameters supplied to the Update operation.
538func (client DataConnectionsClient) Update(ctx context.Context, resourceGroupName string, clusterName string, databaseName string, dataConnectionName string, parameters BasicDataConnection) (result DataConnectionsUpdateFuture, err error) {
539	if tracing.IsEnabled() {
540		ctx = tracing.StartSpan(ctx, fqdn+"/DataConnectionsClient.Update")
541		defer func() {
542			sc := -1
543			if result.FutureAPI != nil && result.FutureAPI.Response() != nil {
544				sc = result.FutureAPI.Response().StatusCode
545			}
546			tracing.EndSpan(ctx, sc, err)
547		}()
548	}
549	req, err := client.UpdatePreparer(ctx, resourceGroupName, clusterName, databaseName, dataConnectionName, parameters)
550	if err != nil {
551		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "Update", nil, "Failure preparing request")
552		return
553	}
554
555	result, err = client.UpdateSender(req)
556	if err != nil {
557		err = autorest.NewErrorWithError(err, "kusto.DataConnectionsClient", "Update", nil, "Failure sending request")
558		return
559	}
560
561	return
562}
563
564// UpdatePreparer prepares the Update request.
565func (client DataConnectionsClient) UpdatePreparer(ctx context.Context, resourceGroupName string, clusterName string, databaseName string, dataConnectionName string, parameters BasicDataConnection) (*http.Request, error) {
566	pathParameters := map[string]interface{}{
567		"clusterName":        autorest.Encode("path", clusterName),
568		"databaseName":       autorest.Encode("path", databaseName),
569		"dataConnectionName": autorest.Encode("path", dataConnectionName),
570		"resourceGroupName":  autorest.Encode("path", resourceGroupName),
571		"subscriptionId":     autorest.Encode("path", client.SubscriptionID),
572	}
573
574	const APIVersion = "2020-09-18"
575	queryParameters := map[string]interface{}{
576		"api-version": APIVersion,
577	}
578
579	preparer := autorest.CreatePreparer(
580		autorest.AsContentType("application/json; charset=utf-8"),
581		autorest.AsPatch(),
582		autorest.WithBaseURL(client.BaseURI),
583		autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}", pathParameters),
584		autorest.WithJSON(parameters),
585		autorest.WithQueryParameters(queryParameters))
586	return preparer.Prepare((&http.Request{}).WithContext(ctx))
587}
588
589// UpdateSender sends the Update request. The method will close the
590// http.Response Body if it receives an error.
591func (client DataConnectionsClient) UpdateSender(req *http.Request) (future DataConnectionsUpdateFuture, err error) {
592	var resp *http.Response
593	resp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))
594	if err != nil {
595		return
596	}
597	var azf azure.Future
598	azf, err = azure.NewFutureFromResponse(resp)
599	future.FutureAPI = &azf
600	future.Result = future.result
601	return
602}
603
604// UpdateResponder handles the response to the Update request. The method always
605// closes the http.Response Body.
606func (client DataConnectionsClient) UpdateResponder(resp *http.Response) (result DataConnectionModel, err error) {
607	err = autorest.Respond(
608		resp,
609		azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated, http.StatusAccepted),
610		autorest.ByUnmarshallingJSON(&result),
611		autorest.ByClosing())
612	result.Response = autorest.Response{Response: resp}
613	return
614}
615