mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-15 17:23:32 -05:00
fixed db trigger, system types and oe tests (#331)
* fixed db trigger, system types and oe tests
This commit is contained in:
@@ -23,7 +23,6 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
|
||||
public override IEnumerable<TreeNode> Expand(TreeNode parent)
|
||||
{
|
||||
//parent.BeginChildrenInit();
|
||||
try
|
||||
{
|
||||
List<TreeNode> allChildren = new List<TreeNode>();
|
||||
@@ -35,7 +34,6 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
}
|
||||
finally
|
||||
{
|
||||
//parent.EndChildrenInit();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,10 +60,15 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
}
|
||||
SmoQueryContext context = parent.GetContextAs<SmoQueryContext>();
|
||||
Validate.IsNotNull(nameof(context), context);
|
||||
|
||||
var validForFlag = ServerVersionHelper.GetValidForFlag(context.SqlServerType);
|
||||
if (ShouldFilterNode(parent, validForFlag))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
IEnumerable<SmoQuerier> queriers = context.ServiceProvider.GetServices<SmoQuerier>(q => IsCompatibleQuerier(q));
|
||||
var filters = this.Filters;
|
||||
var validForFlag = ServerVersionHelper.GetValidForFlag(context.SqlServerType);
|
||||
|
||||
foreach (var querier in queriers)
|
||||
{
|
||||
string propertyFilter = GetProperyFilter(filters, querier.GetType(), validForFlag);
|
||||
@@ -77,7 +80,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
Console.WriteLine("smoObject should not be null");
|
||||
}
|
||||
TreeNode childNode = CreateChild(parent, smoObject);
|
||||
if (childNode != null && !ShouldFilterNode(childNode, validForFlag))
|
||||
if (childNode != null && PassesFinalFilters(childNode, smoObject) && !ShouldFilterNode(childNode, validForFlag))
|
||||
{
|
||||
allChildren.Add(childNode);
|
||||
}
|
||||
@@ -102,15 +105,14 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
|
||||
private string GetProperyFilter(IEnumerable<NodeFilter> filters, Type querierType, ValidForFlag validForFlag)
|
||||
{
|
||||
string filter = "";
|
||||
string filter = string.Empty;
|
||||
if (filters != null)
|
||||
{
|
||||
var filterToApply = filters.FirstOrDefault(f => f.CanApplyFilter(querierType, validForFlag));
|
||||
filter = "";
|
||||
|
||||
if (filterToApply != null)
|
||||
var filtersToApply = filters.Where(f => f.CanApplyFilter(querierType, validForFlag)).ToList();
|
||||
filter = string.Empty;
|
||||
if (filtersToApply.Any())
|
||||
{
|
||||
filter = filterToApply.ToPropertyFilterString();
|
||||
filter = NodeFilter.ConcatProperties(filtersToApply);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -923,7 +923,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
[Export(typeof(SmoQuerier))]
|
||||
internal partial class SqlDatabaseDdlTriggerQuerier: SmoQuerier
|
||||
{
|
||||
Type[] supportedTypes = new Type[] { typeof(Trigger) };
|
||||
Type[] supportedTypes = new Type[] { typeof(DatabaseDdlTrigger) };
|
||||
|
||||
public override Type[] SupportedObjectTypes { get { return supportedTypes; } }
|
||||
|
||||
@@ -937,7 +937,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
HashSet<string> urns = null;
|
||||
if (hasFilter)
|
||||
{
|
||||
string urn = $"{parentDatabase.Urn.ToString()}/Trigger" + filter;
|
||||
string urn = $"{parentDatabase.Urn.ToString()}/DatabaseDdlTrigger" + filter;
|
||||
Enumerator en = new Enumerator();
|
||||
Request request = new Request(new Urn(urn));
|
||||
ServerConnection serverConnection = new ServerConnection(context.Server.ConnectionContext.SqlConnectionObject);
|
||||
@@ -948,11 +948,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
{
|
||||
if (hasFilter && urns != null)
|
||||
{
|
||||
return new SmoCollectionWrapper<Trigger>(retValue).Where(c => urns.Contains(c.Urn));
|
||||
return new SmoCollectionWrapper<DatabaseDdlTrigger>(retValue).Where(c => urns.Contains(c.Urn));
|
||||
}
|
||||
else
|
||||
{
|
||||
return new SmoCollectionWrapper<Trigger>(retValue);
|
||||
return new SmoCollectionWrapper<DatabaseDdlTrigger>(retValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1120,46 +1120,6 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
}
|
||||
}
|
||||
|
||||
[Export(typeof(SmoQuerier))]
|
||||
internal partial class SqlSystemDataTypeQuerier: SmoQuerier
|
||||
{
|
||||
Type[] supportedTypes = new Type[] { typeof(SystemDataType) };
|
||||
|
||||
public override Type[] SupportedObjectTypes { get { return supportedTypes; } }
|
||||
|
||||
public override IEnumerable<SqlSmoObject> Query(SmoQueryContext context, string filter)
|
||||
{
|
||||
Server parentServer = context.Parent as Server;
|
||||
if (parentServer != null)
|
||||
{
|
||||
var retValue = parentServer.SystemDataTypes;
|
||||
bool hasFilter = !string.IsNullOrEmpty(filter);
|
||||
HashSet<string> urns = null;
|
||||
if (hasFilter)
|
||||
{
|
||||
string urn = $"{parentServer.Urn.ToString()}/SystemDataType" + filter;
|
||||
Enumerator en = new Enumerator();
|
||||
Request request = new Request(new Urn(urn));
|
||||
ServerConnection serverConnection = new ServerConnection(context.Server.ConnectionContext.SqlConnectionObject);
|
||||
EnumResult result = en.Process(serverConnection, request);
|
||||
urns = GetUrns(result);
|
||||
}
|
||||
if (retValue != null)
|
||||
{
|
||||
if (hasFilter && urns != null)
|
||||
{
|
||||
return new SmoCollectionWrapper<SystemDataType>(retValue).Where(c => urns.Contains(c.Urn));
|
||||
}
|
||||
else
|
||||
{
|
||||
return new SmoCollectionWrapper<SystemDataType>(retValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
return Enumerable.Empty<SqlSmoObject>();
|
||||
}
|
||||
}
|
||||
|
||||
[Export(typeof(SmoQuerier))]
|
||||
internal partial class SqlUserDefinedDataTypeQuerier: SmoQuerier
|
||||
{
|
||||
@@ -2802,15 +2762,15 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
|
||||
public override IEnumerable<SqlSmoObject> Query(SmoQueryContext context, string filter)
|
||||
{
|
||||
Server parentServer = context.Parent as Server;
|
||||
if (parentServer != null)
|
||||
Database parentDatabase = context.Parent as Database;
|
||||
if (parentDatabase != null)
|
||||
{
|
||||
var retValue = parentServer.SystemDataTypes;
|
||||
var retValue = parentDatabase.Parent.SystemDataTypes;
|
||||
bool hasFilter = !string.IsNullOrEmpty(filter);
|
||||
HashSet<string> urns = null;
|
||||
if (hasFilter)
|
||||
{
|
||||
string urn = $"{parentServer.Urn.ToString()}/SystemDataType" + filter;
|
||||
string urn = $"{parentDatabase.Urn.ToString()}/SystemDataType" + filter;
|
||||
Enumerator en = new Enumerator();
|
||||
Request request = new Request(new Urn(urn));
|
||||
ServerConnection serverConnection = new ServerConnection(context.Server.ConnectionContext.SqlConnectionObject);
|
||||
|
||||
@@ -52,7 +52,9 @@
|
||||
<Node Name="SqlFullTextIndex" Parent="Table" Collection="False" />
|
||||
<Node Name="SqlStatistic" Parent="TableViewBase"/>
|
||||
|
||||
<Node Name="SqlDatabaseDdlTrigger" Type="Trigger" Parent="Database"/>
|
||||
<Node Name="SqlDatabaseDdlTrigger" Type="DatabaseDdlTrigger" Parent="Database">
|
||||
<NavigationPath Parent="Database" Field="Triggers" />
|
||||
</Node>
|
||||
<Node Name="SqlAssembly" Type="SqlAssembly" Parent="Database" >
|
||||
<NavigationPath Parent="Database" Field="Assemblies" />
|
||||
</Node>
|
||||
@@ -61,7 +63,6 @@
|
||||
<Node Name="SqlDefault" Parent="Database" />
|
||||
<Node Name="SqlSequence" Parent="Database" />
|
||||
|
||||
<Node Name="SqlSystemDataType" Parent="Server" />
|
||||
<Node Name="SqlUserDefinedDataType" Parent="Database" />
|
||||
|
||||
<Node Name="SqlUserDefinedTableType" Parent="Database" />
|
||||
@@ -129,7 +130,9 @@
|
||||
|
||||
<Node Name="SqlPartitionFunctionParameter" Parent="PartitionFunction" />
|
||||
|
||||
<Node Name="SqlBuiltInType" Type="SystemDataType" Parent="Server"/>
|
||||
<Node Name="SqlBuiltInType" Type="SystemDataType" Parent="Database">
|
||||
<NavigationPath Parent="Database" Field="Parent.SystemDataTypes" />
|
||||
</Node>
|
||||
<!-- TODO Enable all types
|
||||
<Node Name="SqlRoute"/>
|
||||
-->
|
||||
|
||||
@@ -216,6 +216,7 @@
|
||||
<Child Name="ScalarValuedFunctions"/>
|
||||
<Child Name="AggregateFunctions"/>
|
||||
</Node>
|
||||
|
||||
<Node Name="DatabaseTriggers" LocLabel="SR.SchemaHierarchy_DatabaseTriggers" BaseClass="ModelBased" NodeType="DatabaseTrigger" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlDatabaseDdlTrigger"/>
|
||||
<Node Name="Assemblies" LocLabel="SR.SchemaHierarchy_Assemblies" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="Assembly" ChildQuerierTypes="SqlAssembly" ValidFor="Sql2005|Sql2008|Sql2012|Sql2014|Sql2016|SqlvNext|AzureV12"/>
|
||||
<Node Name="Types" LocLabel="SR.SchemaHierarchy_Types" BaseClass="ModelBased" >
|
||||
@@ -268,8 +269,8 @@
|
||||
<Node Name="SystemUnicodeCharacterStrings" LocLabel="SR.SchemaHierarchy_SystemUnicodeCharacterStrings" BaseClass="ModelBased" NodeType="SystemUnicodeCharacterString" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlBuiltInType"/>
|
||||
<Node Name="SystemBinaryStrings" LocLabel="SR.SchemaHierarchy_SystemBinaryStrings" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="SystemBinaryString" ChildQuerierTypes="SqlBuiltInType"/>
|
||||
<Node Name="SystemOtherDataTypes" LocLabel="SR.SchemaHierarchy_SystemOtherDataTypes" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="SystemOtherDataType" ChildQuerierTypes="SqlBuiltInType"/>
|
||||
<Node Name="SystemClrDataTypes" LocLabel="SR.SchemaHierarchy_SystemCLRDataTypes" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="SystemClrDataType" ChildQuerierTypes="SqlUserDefinedType" ValidFor="Sql2005|Sql2008|Sql2012|Sql2014|Sql2016|SqlvNext|AzureV11|AzureV12"/>
|
||||
<Node Name="SystemSpatialDataTypes" LocLabel="SR.SchemaHierarchy_SystemSpatialDataTypes" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="SystemSpatialDataType" ChildQuerierTypes="SqlUserDefinedType" ValidFor="Sql2008|Sql2012|Sql2014|Sql2016|SqlvNext|AzureV11|AzureV12"/>
|
||||
<Node Name="SystemClrDataTypes" LocLabel="SR.SchemaHierarchy_SystemCLRDataTypes" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="SystemClrDataType" ChildQuerierTypes="SqlBuiltInType" ValidFor="Sql2005|Sql2008|Sql2012|Sql2014|Sql2016|SqlvNext|AzureV11|AzureV12"/>
|
||||
<Node Name="SystemSpatialDataTypes" LocLabel="SR.SchemaHierarchy_SystemSpatialDataTypes" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="SystemSpatialDataType" ChildQuerierTypes="SqlBuiltInType" ValidFor="Sql2008|Sql2012|Sql2014|Sql2016|SqlvNext|AzureV11|AzureV12"/>
|
||||
|
||||
<!-- Childs of ExternalResources -->
|
||||
<Node Name="ExternalDataSources" LocLabel="SR.SchemaHierarchy_ExternalDataSources" BaseClass="ModelBased" NodeType="ExternalDataSource" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlExternalDataSource" ValidFor="Sql2016|SqlvNext|AzureV12"/>
|
||||
|
||||
@@ -2393,7 +2393,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
{
|
||||
get
|
||||
{
|
||||
return new [] { typeof(SqlUserDefinedTypeQuerier), };
|
||||
return new [] { typeof(SqlBuiltInTypeQuerier), };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2417,7 +2417,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
||||
{
|
||||
get
|
||||
{
|
||||
return new [] { typeof(SqlUserDefinedTypeQuerier), };
|
||||
return new [] { typeof(SqlBuiltInTypeQuerier), };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user