From 680f9f47d053bc9b8d064953bd0d4643eee17032 Mon Sep 17 00:00:00 2001 From: Anthony Dresser Date: Wed, 18 Oct 2017 19:09:55 -0700 Subject: [PATCH] added change database handler (#505) --- .../Connection/ConnectionService.cs | 12 ++++++++++ .../Contracts/ChangeDatabaseParams.cs | 23 +++++++++++++++++++ .../Contracts/ChangeDatabaseRequest.cs | 19 +++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/ChangeDatabaseParams.cs create mode 100644 src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/ChangeDatabaseRequest.cs diff --git a/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs b/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs index 02aad5e2..ef2e59d2 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs @@ -863,6 +863,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection serviceHost.SetRequestHandler(CancelConnectRequest.Type, HandleCancelConnectRequest); serviceHost.SetRequestHandler(DisconnectRequest.Type, HandleDisconnectRequest); serviceHost.SetRequestHandler(ListDatabasesRequest.Type, HandleListDatabasesRequest); + serviceHost.SetRequestHandler(ChangeDatabaseRequest.Type, HandleChangeDatabase); } /// @@ -1165,6 +1166,17 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection return connectionBuilder; } + /// + /// Handles a request to change the database for a connection + /// + public async Task HandleChangeDatabase( + ChangeDatabaseParams changeDatabaseParams, + RequestContext requestContext) + { + ChangeConnectionDatabaseContext(changeDatabaseParams.OwnerUri, changeDatabaseParams.NewDatabase); + await requestContext.SendResult(true); + } + /// /// Change the database context of a connection. /// diff --git a/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/ChangeDatabaseParams.cs b/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/ChangeDatabaseParams.cs new file mode 100644 index 00000000..5b3d8460 --- /dev/null +++ b/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/ChangeDatabaseParams.cs @@ -0,0 +1,23 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// + +namespace Microsoft.SqlTools.ServiceLayer.Connection.Contracts +{ + /// + /// Parameters for the List Databases Request. + /// + public class ChangeDatabaseParams + { + /// + /// URI of the owner of the connection requesting the list of databases. + /// + public string OwnerUri { get; set; } + + /// + /// The database to change to + /// + public string NewDatabase { get; set; } + } +} diff --git a/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/ChangeDatabaseRequest.cs b/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/ChangeDatabaseRequest.cs new file mode 100644 index 00000000..28bb4f6f --- /dev/null +++ b/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/ChangeDatabaseRequest.cs @@ -0,0 +1,19 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// + +using Microsoft.SqlTools.Hosting.Protocol.Contracts; + +namespace Microsoft.SqlTools.ServiceLayer.Connection.Contracts +{ + /// + /// List databases request mapping entry + /// + public class ChangeDatabaseRequest + { + public static readonly + RequestType Type = + RequestType.Create("connection/changedatabase"); + } +}