add exclude roles

This commit is contained in:
Jicheng Lu 2024-11-15 14:39:27 -06:00
parent 8dcf894234
commit 94931f7d1f
4 changed files with 22 additions and 1 deletions

View file

@ -1,3 +1,5 @@
using BotSharp.Abstraction.Users.Enums;
namespace BotSharp.Abstraction.Repositories.Filters;
public class RoleFilter
@ -5,6 +7,10 @@ public class RoleFilter
[JsonPropertyName("names")]
public IEnumerable<string>? Names { get; set; }
[JsonPropertyName("exclude_roles")]
public IEnumerable<string>? ExcludeRoles { get; set; } = UserConstant.AdminRoles;
public static RoleFilter Empty()
{
return new RoleFilter();

View file

@ -19,4 +19,9 @@ public class Role
[JsonPropertyName("created_time")]
public DateTime CreatedTime { get; set; }
public override string ToString()
{
return Name;
}
}

View file

@ -45,7 +45,12 @@ public partial class FileRepository
// Apply filters
if (!filter.Names.IsNullOrEmpty())
{
roles = roles.Where(x => filter.Names.Contains(x.Id));
roles = roles.Where(x => filter.Names.Contains(x.Name));
}
if (!filter.ExcludeRoles.IsNullOrEmpty())
{
roles = roles.Where(x => !filter.ExcludeRoles.Contains(x.Name));
}
return roles.ToList();

View file

@ -48,6 +48,11 @@ public partial class MongoRepository
roleFilters.Add(roleBuilder.In(x => x.Name, filter.Names));
}
if (!filter.ExcludeRoles.IsNullOrEmpty())
{
roleFilters.Add(roleBuilder.Nin(x => x.Name, filter.ExcludeRoles));
}
// Search
var roleDocs = _dc.Roles.Find(roleBuilder.And(roleFilters)).ToList();
var roles = roleDocs.Select(x => x.ToRole()).ToList();