mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-18 01:25:41 -05:00
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:
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user