mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-13 17:23:02 -05:00
Fix schema handling in search result of User Management (#2057)
* fix schema filed in search result * fix search for securable
This commit is contained in:
@@ -173,7 +173,8 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectManagement
|
||||
res.Add(new SearchResultItem
|
||||
{
|
||||
Name = obj.Name,
|
||||
Type = type
|
||||
Type = type,
|
||||
Schema = obj.Schema
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -439,13 +439,52 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectManagement
|
||||
}
|
||||
}
|
||||
|
||||
internal static SearchableObject ConvertFromSecurableNameToSearchableObject(string securableName, string type, string database, object connectionInfo)
|
||||
internal static SearchableObject ConvertFromSecurableNameToSearchableObject(string securableName, string type, string database, string schema, object connectionInfo)
|
||||
{
|
||||
SearchableObjectType searchableObjectType = ConvertPotentialSqlObjectTypeToSearchableObjectType(type);
|
||||
|
||||
SearchableObjectTypeDescription desc = SearchableObjectTypeDescription.GetDescription(searchableObjectType);
|
||||
var urn = desc.GetSearchUrn(securableName, true, true);
|
||||
return SearchableObject.GetSearchableObject(searchableObjectType, connectionInfo, database, securableName);
|
||||
SearchableObjectCollection results = new SearchableObjectCollection();
|
||||
|
||||
if (desc.IsDatabaseObject)
|
||||
{
|
||||
if (desc.IsSchemaObject)
|
||||
{
|
||||
SearchableObject.Search(
|
||||
results,
|
||||
searchableObjectType,
|
||||
connectionInfo,
|
||||
database,
|
||||
securableName,
|
||||
true,
|
||||
schema,
|
||||
true,
|
||||
true);
|
||||
}
|
||||
else
|
||||
{
|
||||
SearchableObject.Search(
|
||||
results,
|
||||
searchableObjectType,
|
||||
connectionInfo,
|
||||
database,
|
||||
securableName,
|
||||
true,
|
||||
true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SearchableObject.Search(
|
||||
results,
|
||||
searchableObjectType,
|
||||
connectionInfo,
|
||||
securableName,
|
||||
true,
|
||||
true);
|
||||
}
|
||||
SearchableObject result = (results.Count != 0) ? results[0] : null;
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static void SendToServerPermissionChanges(bool exists, string name, SecurablePermissions[] securablePermissions, Principal principal, CDataContainer dataContainer, string database)
|
||||
@@ -464,7 +503,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectManagement
|
||||
{
|
||||
foreach (SecurablePermissions secPerm in securablePermissions)
|
||||
{
|
||||
var securable = principal.AddSecurable(SecurableUtils.ConvertFromSecurableNameToSearchableObject(secPerm.Name, secPerm.Type, database, dataContainer.ConnectionInfo));
|
||||
var securable = principal.AddSecurable(SecurableUtils.ConvertFromSecurableNameToSearchableObject(secPerm.Name, secPerm.Type, database, secPerm.Schema, dataContainer.ConnectionInfo));
|
||||
var states = principal.GetPermissionStates(securable);
|
||||
ApplyPermissionStates(secPerm.Permissions, states);
|
||||
}
|
||||
@@ -474,7 +513,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectManagement
|
||||
var securables = principal.GetSecurables(new SecurableComparer(SecurableComparer.DefaultSortingOrder, true));
|
||||
foreach (SecurablePermissions secPerm in securablePermissions)
|
||||
{
|
||||
var securable = FindMatchedSecurable(securables, secPerm.Name) ?? principal.AddSecurable(SecurableUtils.ConvertFromSecurableNameToSearchableObject(secPerm.Name, secPerm.Type, database, dataContainer.ConnectionInfo));
|
||||
var securable = FindMatchedSecurable(securables, secPerm.Name) ?? principal.AddSecurable(SecurableUtils.ConvertFromSecurableNameToSearchableObject(secPerm.Name, secPerm.Type, database, secPerm.Schema, dataContainer.ConnectionInfo));
|
||||
var states = principal.GetPermissionStates(securable);
|
||||
ApplyPermissionStates(secPerm.Permissions, states);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user