Add table and view metadata messges (#296)

* Add SMO table property lookup event

* Fix a couple bugs in column metadata

* Add GetView metadata message
This commit is contained in:
Karl Burtram
2017-03-28 16:30:46 +00:00
committed by GitHub
parent f7036f3f73
commit a1aa3f8b4c
7 changed files with 483 additions and 3 deletions

View File

@@ -53,6 +53,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Metadata
public void InitializeService(ServiceHost serviceHost)
{
serviceHost.SetRequestHandler(MetadataListRequest.Type, HandleMetadataListRequest);
serviceHost.SetRequestHandler(TableMetadataRequest.Type, HandleGetTableRequest);
serviceHost.SetRequestHandler(ViewMetadataRequest.Type, HandleGetViewRequest);
}
/// <summary>
@@ -87,6 +89,62 @@ namespace Microsoft.SqlTools.ServiceLayer.Metadata
}
}
/// <summary>
/// Handle a table metadata query request
/// </summary>
internal static async Task HandleGetTableRequest(
TableMetadataParams metadataParams,
RequestContext<TableMetadataResult> requestContext)
{
await HandleGetTableOrViewRequest(metadataParams, "table", requestContext);
}
/// <summary>
/// Handle a view metadata query request
/// </summary>
internal static async Task HandleGetViewRequest(
TableMetadataParams metadataParams,
RequestContext<TableMetadataResult> requestContext)
{
await HandleGetTableOrViewRequest(metadataParams, "view", requestContext);
}
/// <summary>
/// Handle a table pr view metadata query request
/// </summary>
private static async Task HandleGetTableOrViewRequest(
TableMetadataParams metadataParams,
string objectType,
RequestContext<TableMetadataResult> requestContext)
{
try
{
ConnectionInfo connInfo;
MetadataService.ConnectionServiceInstance.TryFindConnection(
metadataParams.OwnerUri,
out connInfo);
ColumnMetadata[] metadata = null;
if (connInfo != null)
{
SqlConnection sqlConn = OpenMetadataConnection(connInfo);
TableMetadata table = new SmoMetadataFactory().GetObjectMetadata(
sqlConn, metadataParams.Schema,
metadataParams.ObjectName, objectType);
metadata = table.Columns;
}
await requestContext.SendResult(new TableMetadataResult
{
Columns = metadata
});
}
catch (Exception ex)
{
await requestContext.SendError(ex.ToString());
}
}
/// <summary>
/// Create a SqlConnection to use for querying metadata
/// </summary>
@@ -162,6 +220,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Metadata
}
}
}
}
}
}
}