diff --git a/src/Microsoft.SqlTools.ServiceLayer/HostLoader.cs b/src/Microsoft.SqlTools.ServiceLayer/HostLoader.cs
index 44f92347..0cf81912 100644
--- a/src/Microsoft.SqlTools.ServiceLayer/HostLoader.cs
+++ b/src/Microsoft.SqlTools.ServiceLayer/HostLoader.cs
@@ -34,6 +34,7 @@ using Microsoft.SqlTools.ServiceLayer.SqlContext;
using Microsoft.SqlTools.ServiceLayer.Workspace;
using Microsoft.SqlTools.ServiceLayer.NotebookConvert;
using Microsoft.SqlTools.ServiceLayer.ModelManagement;
+using Microsoft.SqlTools.ServiceLayer.TableDesigner;
namespace Microsoft.SqlTools.ServiceLayer
{
@@ -152,12 +153,15 @@ namespace Microsoft.SqlTools.ServiceLayer
NotebookConvertService.Instance.InitializeService(serviceHost);
serviceProvider.RegisterSingleService(NotebookConvertService.Instance);
- InsightsGeneratorService.Instance.InitializeService(serviceHost);
+ InsightsGeneratorService.Instance.InitializeService(serviceHost);
serviceProvider.RegisterSingleService(InsightsGeneratorService.Instance);
-
+
MigrationService.Instance.InitializeService(serviceHost);
serviceProvider.RegisterSingleService(MigrationService.Instance);
+ TableDesignerService.Instance.InitializeService(serviceHost);
+ serviceProvider.RegisterSingleService(TableDesignerService.Instance);
+
InitializeHostedServices(serviceProvider, serviceHost);
serviceHost.ServiceProvider = serviceProvider;
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/CheckBoxProperties.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/CheckBoxProperties.cs
new file mode 100644
index 00000000..57fd223b
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/CheckBoxProperties.cs
@@ -0,0 +1,15 @@
+//
+// 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.TableDesigner.Contracts
+{
+ ///
+ /// Checkbox properties
+ ///
+ public class CheckBoxProperties : ComponentPropertiesBase
+ {
+ public bool Checked { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/ComponentPropertiesBase.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/ComponentPropertiesBase.cs
new file mode 100644
index 00000000..f02c023d
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/ComponentPropertiesBase.cs
@@ -0,0 +1,28 @@
+//
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+//
+
+using System;
+
+namespace Microsoft.SqlTools.ServiceLayer.TableDesigner.Contracts
+{
+ ///
+ /// Base class for component properties
+ ///
+ public abstract class ComponentPropertiesBase
+ {
+ public ComponentPropertiesBase()
+ {
+ this.Enabled = true;
+ }
+
+ public string Title { get; set; }
+
+ public string AriaLabel { get; set; }
+
+ public Nullable Width { get; set; }
+
+ public bool Enabled { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/DropdownProperties.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/DropdownProperties.cs
new file mode 100644
index 00000000..e6b99195
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/DropdownProperties.cs
@@ -0,0 +1,17 @@
+//
+// 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.TableDesigner.Contracts
+{
+ ///
+ /// Dropdown properties
+ ///
+ public class DropdownProperties : ComponentPropertiesBase
+ {
+ public string Value { get; set; }
+
+ public string[] Values { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/InputBoxProperties.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/InputBoxProperties.cs
new file mode 100644
index 00000000..97bcf930
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/InputBoxProperties.cs
@@ -0,0 +1,15 @@
+//
+// 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.TableDesigner.Contracts
+{
+ ///
+ /// Inputbox properties
+ ///
+ public class InputBoxProperties : ComponentPropertiesBase
+ {
+ public string Value { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/TableProperties.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/TableProperties.cs
new file mode 100644
index 00000000..22944b91
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Components/TableProperties.cs
@@ -0,0 +1,33 @@
+//
+// 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.TableDesigner.Contracts
+{
+ ///
+ /// Table component properties
+ ///
+ public class TableProperties : ComponentPropertiesBase
+ {
+ ///
+ /// The column names to be displayed
+ ///
+ public string[] Columns { get; set; }
+
+ ///
+ /// The object type display name of the objects in this table
+ ///
+ public string ObjectTypeDisplayName { get; set; }
+
+ ///
+ /// All properties of the object.
+ ///
+ public DesignerDataPropertyInfo[] ItemProperties { get; set; }
+
+ ///
+ /// The object list.
+ ///
+ public T[] Data { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/DesignerDataPropertyInfo.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/DesignerDataPropertyInfo.cs
new file mode 100644
index 00000000..bdc6c9f1
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/DesignerDataPropertyInfo.cs
@@ -0,0 +1,31 @@
+//
+// 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.TableDesigner.Contracts
+{
+ ///
+ /// Represents a component/property in the table designer
+ ///
+ public class DesignerDataPropertyInfo
+ {
+ ///
+ /// The name of the property
+ ///
+ public string PropertyName { get; set; }
+
+ public string ComponentType { get; set; }
+
+ ///
+ /// The name of the group the property will be placed in whe displayed in
+ ///
+ public string Group { get; set; }
+
+
+ ///
+ /// The properties of component
+ ///
+ public ComponentPropertiesBase ComponentProperties { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Requests/GetTableDesignerInfoRequest.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Requests/GetTableDesignerInfoRequest.cs
new file mode 100644
index 00000000..6ea8ea3b
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Requests/GetTableDesignerInfoRequest.cs
@@ -0,0 +1,20 @@
+//
+// 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.TableDesigner.Contracts
+{
+ ///
+ /// The service request to get the designer information about a table.
+ ///
+ public class GetTableDesignerInfoRequest
+ {
+ ///
+ /// Request definition
+ ///
+ public static readonly RequestType Type = RequestType.Create("tabledesigner/gettabledesignerinfo");
+ }
+}
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Requests/ProcessTableDesignerEditRequest.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Requests/ProcessTableDesignerEditRequest.cs
new file mode 100644
index 00000000..83f1d856
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Requests/ProcessTableDesignerEditRequest.cs
@@ -0,0 +1,39 @@
+//
+// 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;
+using Microsoft.SqlTools.Utility;
+
+namespace Microsoft.SqlTools.ServiceLayer.TableDesigner.Contracts
+{
+ public class ProcessTableDesignerEditRequestParams : GeneralRequestDetails
+ {
+ public TableInfo TableInfo { get; set; }
+
+ public TableDesignerChangeInfo TableChangeInfo { get; set; }
+
+ public TableDataModel Data { get; set; }
+ }
+
+ public class ProcessTableDesignerEditResponse
+ {
+ public TableDataModel Data { get; set; }
+
+ public bool IsValid { get; set; }
+
+ public TableDesignerValidationError[] errors { get; set; }
+ }
+
+ ///
+ /// The service request to process the changes made in the table designer.
+ ///
+ public class ProcessTableDesignerEditRequest
+ {
+ ///
+ /// Request definition
+ ///
+ public static readonly RequestType Type = RequestType.Create("tabledesigner/processedit");
+ }
+}
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Requests/SaveTableChangesRequest.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Requests/SaveTableChangesRequest.cs
new file mode 100644
index 00000000..520cf555
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/Requests/SaveTableChangesRequest.cs
@@ -0,0 +1,32 @@
+//
+// 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;
+using Microsoft.SqlTools.Utility;
+
+namespace Microsoft.SqlTools.ServiceLayer.TableDesigner.Contracts
+{
+ public class SaveTableChangesRequestParams : GeneralRequestDetails
+ {
+ public TableInfo TableInfo { get; set; }
+
+ public TableDataModel Data { get; set; }
+ }
+
+ public class SaveTableChangesResponse
+ {
+ }
+
+ ///
+ /// The service request to save the changes.
+ ///
+ public class SaveTableChangesRequest
+ {
+ ///
+ /// Request definition
+ ///
+ public static readonly RequestType Type = RequestType.Create("tabledesigner/savechanges");
+ }
+}
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableChangeInfo.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableChangeInfo.cs
new file mode 100644
index 00000000..c8e13ef3
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableChangeInfo.cs
@@ -0,0 +1,34 @@
+//
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+//
+
+using System.Runtime.Serialization;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+
+namespace Microsoft.SqlTools.ServiceLayer.TableDesigner.Contracts
+{
+ [JsonConverter(typeof(StringEnumConverter))]
+ public enum DesignerEditType
+ {
+ [EnumMember(Value = "Add")]
+ Add,
+ [EnumMember(Value = "Remove")]
+ Remove,
+ [EnumMember(Value = "Update")]
+ Update,
+ }
+
+ ///
+ /// The information about a change made inside the table designer.
+ ///
+ public class TableDesignerChangeInfo
+ {
+ public DesignerEditType Type { get; set; }
+
+ public object Property { get; set; }
+
+ public object Value { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableColumn.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableColumn.cs
new file mode 100644
index 00000000..32101226
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableColumn.cs
@@ -0,0 +1,25 @@
+//
+// 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.TableDesigner.Contracts
+{
+ ///
+ /// The data model of a table column object
+ ///
+ public class TableColumn
+ {
+ public InputBoxProperties Name { get; set; }
+
+ public DropdownProperties Type { get; set; }
+
+ public InputBoxProperties Length { get; set; }
+
+ public CheckBoxProperties AllowNulls { get; set; }
+
+ public InputBoxProperties DefaultValue { get; set; }
+
+ public CheckBoxProperties IsPrimaryKey { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDataModel.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDataModel.cs
new file mode 100644
index 00000000..a86d40cb
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDataModel.cs
@@ -0,0 +1,27 @@
+//
+// 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.TableDesigner.Contracts
+{
+ ///
+ /// The data model for a table object
+ ///
+ public class TableDataModel
+ {
+ public InputBoxProperties Name { get; set; }
+
+ public DropdownProperties Schema { get; set; }
+
+ public InputBoxProperties Description { get; set; }
+
+ public TableColumnCollection Columns { get; set; }
+
+ public InputBoxProperties Script { get; set; }
+ }
+
+ public class TableColumnCollection : TableProperties
+ {
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDesignerInfo.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDesignerInfo.cs
new file mode 100644
index 00000000..a5bb108a
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDesignerInfo.cs
@@ -0,0 +1,21 @@
+//
+// 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.TableDesigner.Contracts
+{
+ ///
+ /// The information requested by the table designer UI.
+ ///
+ public class TableDesignerInfo
+ {
+ public TableDesignerView View { get; set; }
+
+ public TableDataModel Data { get; set; }
+
+ public string[] ColumnTypes { get; set; }
+
+ public string[] Schemas { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDesignerPropertyIdentifier.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDesignerPropertyIdentifier.cs
new file mode 100644
index 00000000..62c7a923
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDesignerPropertyIdentifier.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.
+//
+
+namespace Microsoft.SqlTools.ServiceLayer.TableDesigner.Contracts
+{
+ ///
+ /// The information that can identify a property in a collection.
+ ///
+ public class TableDesignerPropertyIdentifier
+ {
+ public string ParentProperty { get; set; }
+
+ public int Index { get; set; }
+
+ public string Property { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDesignerValidationError.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDesignerValidationError.cs
new file mode 100644
index 00000000..d57ffc1a
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDesignerValidationError.cs
@@ -0,0 +1,27 @@
+//
+// 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;
+using Microsoft.SqlTools.ServiceLayer.Utility;
+using Microsoft.SqlTools.Utility;
+
+namespace Microsoft.SqlTools.ServiceLayer.TableDesigner.Contracts
+{
+ ///
+ /// Validation error
+ ///
+ public class TableDesignerValidationError
+ {
+ ///
+ /// The error message
+ ///
+ public string Message { get; set; }
+
+ ///
+ /// The property associated with the message, could be a string or TableDesignerPropertyIdentifier
+ ///
+ public object Property { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDesignerView.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDesignerView.cs
new file mode 100644
index 00000000..44ae65ab
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableDesignerView.cs
@@ -0,0 +1,18 @@
+//
+// 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.TableDesigner.Contracts
+{
+ ///
+ /// Table designer's view definition, there are predefined common properties.
+ /// Specify the additional properties in this class.
+ ///
+ public class TableDesignerView
+ {
+ public DesignerDataPropertyInfo[] AdditionalTableProperties { get; set; }
+
+ public DesignerDataPropertyInfo[] AdditionalTableColumnProperties { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableInfo.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableInfo.cs
new file mode 100644
index 00000000..8d319bf3
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/Contracts/TableInfo.cs
@@ -0,0 +1,25 @@
+//
+// 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.TableDesigner.Contracts
+{
+ ///
+ /// The information of the table being designed.
+ ///
+ public class TableInfo
+ {
+ public string Server { get; set; }
+
+ public string Database { get; set; }
+
+ public string Schema { get; set; }
+
+ public string Name { get; set; }
+
+ public bool IsNewTable { get; set; }
+
+ public string ConnectionUri { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/TableDesignerService.cs b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/TableDesignerService.cs
new file mode 100644
index 00000000..efa07ebd
--- /dev/null
+++ b/src/Microsoft.SqlTools.ServiceLayer/TableDesigner/TableDesignerService.cs
@@ -0,0 +1,125 @@
+//
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+//
+
+using System;
+using System.Threading.Tasks;
+using Microsoft.SqlTools.Hosting.Protocol;
+using Microsoft.SqlTools.ServiceLayer.Hosting;
+using Microsoft.SqlTools.ServiceLayer.TableDesigner.Contracts;
+
+namespace Microsoft.SqlTools.ServiceLayer.TableDesigner
+{
+ ///
+ /// Class that handles the Table Designer related requests
+ ///
+ public sealed class TableDesignerService : IDisposable
+ {
+ private bool disposed = false;
+ private static readonly Lazy instance = new Lazy(() => new TableDesignerService());
+
+ public TableDesignerService()
+ {
+ }
+
+ ///
+ /// Gets the singleton instance object
+ ///
+ public static TableDesignerService Instance
+ {
+ get { return instance.Value; }
+ }
+
+ ///
+ /// Service host object for sending/receiving requests/events.
+ ///
+ internal IProtocolEndpoint ServiceHost
+ {
+ get;
+ set;
+ }
+
+ ///
+ /// Initializes the table designer service instance
+ ///
+ public void InitializeService(ServiceHost serviceHost)
+ {
+ this.ServiceHost = serviceHost;
+ this.ServiceHost.SetRequestHandler(GetTableDesignerInfoRequest.Type, HandleGetTableDesignerInfoRequest);
+ this.ServiceHost.SetRequestHandler(ProcessTableDesignerEditRequest.Type, HandleProcessTableDesignerEditRequest);
+ this.ServiceHost.SetRequestHandler(SaveTableChangesRequest.Type, HandleSaveTableChangesRequest);
+ }
+
+ private async Task HandleGetTableDesignerInfoRequest(TableInfo tableInfo, RequestContext requestContext)
+ {
+ await Task.Run(async () =>
+ {
+ try
+ {
+ // TODO
+ TableDataModel tableModel = new TableDataModel();
+ TableDesignerView view = new TableDesignerView();
+ await requestContext.SendResult(new TableDesignerInfo()
+ {
+ Data = tableModel,
+ View = view,
+ ColumnTypes = new string[] { },
+ Schemas = new string[] { }
+ });
+ }
+ catch (Exception e)
+ {
+ await requestContext.SendError(e);
+ }
+ });
+ }
+
+ private async Task HandleProcessTableDesignerEditRequest(ProcessTableDesignerEditRequestParams requestParams, RequestContext requestContext)
+ {
+ await Task.Run(async () =>
+ {
+ try
+ {
+ // TODO
+ await requestContext.SendResult(new ProcessTableDesignerEditResponse()
+ {
+ Data = requestParams.Data,
+ IsValid = true
+ });
+ }
+ catch (Exception e)
+ {
+ await requestContext.SendError(e);
+ }
+ });
+ }
+
+ private async Task HandleSaveTableChangesRequest(SaveTableChangesRequestParams requestParams, RequestContext requestContext)
+ {
+ await Task.Run(async () =>
+ {
+ try
+ {
+ // TODO
+ await requestContext.SendResult(new SaveTableChangesResponse());
+ }
+ catch (Exception e)
+ {
+ await requestContext.SendError(e);
+ }
+ });
+ }
+
+ ///
+ /// Disposes the table designer Service
+ ///
+ public void Dispose()
+ {
+ if (!disposed)
+ {
+ disposed = true;
+ }
+ }
+ }
+}