mirror of
https://github.com/hmaxnl/DotBased.git
synced 2025-04-25 14:47:55 +02:00
[CHANGE] Small updates repositories
This commit is contained in:
parent
095b66f6f3
commit
8e72d123fd
|
@ -1,3 +1,4 @@
|
|||
using DotBased.AspNet.Authority.EFCore.Models;
|
||||
using DotBased.AspNet.Authority.Models;
|
||||
using DotBased.AspNet.Authority.Models.Authority;
|
||||
using DotBased.AspNet.Authority.Repositories;
|
||||
|
@ -37,6 +38,28 @@ public class GroupRepository(IDbContextFactory<AuthorityContext> contextFactory,
|
|||
return await context.Groups.Where(g => g.Id == groupId).Include(g => g.Attributes).FirstOrDefaultAsync(cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
public async Task<bool> AddUsersToGroupAsync(List<AuthorityUser> users, AuthorityGroup group, CancellationToken cancellationToken = default)
|
||||
{
|
||||
await using var context = await contextFactory.CreateDbContextAsync(cancellationToken);
|
||||
if (!context.Groups.Any(g => g.Id == group.Id))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var usersToAdd = users.Where(u => !context.UserGroups.Any(ug => ug.UserId == u.Id)).ToList();
|
||||
if (usersToAdd.Count == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach (var user in usersToAdd)
|
||||
{
|
||||
context.UserGroups.Add(new UserGroups() { UserId = user.Id, GroupId = group.Id });
|
||||
}
|
||||
var saveResult = await context.SaveChangesAsync(cancellationToken);
|
||||
return saveResult > 0;
|
||||
}
|
||||
|
||||
public async Task<List<AuthorityGroup>> GetUserGroupsAsync(AuthorityUser user, CancellationToken cancellationToken = default)
|
||||
{
|
||||
await using var context = await contextFactory.CreateDbContextAsync(cancellationToken);
|
||||
|
@ -72,22 +95,21 @@ public class GroupRepository(IDbContextFactory<AuthorityContext> contextFactory,
|
|||
logger.LogError("Group version validation failed.");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
var entry = context.Groups.Update(group);
|
||||
var saveResult = await context.SaveChangesAsync(cancellationToken);
|
||||
return saveResult != 0 ? entry.Entity : null;
|
||||
}
|
||||
|
||||
public async Task<bool> DeleteGroupAsync(AuthorityGroup group, CancellationToken cancellationToken = default)
|
||||
public async Task<bool> DeleteGroupsAsync(List<AuthorityGroup> groups, CancellationToken cancellationToken = default)
|
||||
{
|
||||
await using var context = await contextFactory.CreateDbContextAsync(cancellationToken);
|
||||
var currentGroup = await context.Groups.FirstOrDefaultAsync(g => g.Id == group.Id, cancellationToken);
|
||||
if (currentGroup == null)
|
||||
{
|
||||
logger.LogError("Group with id {groupId} not found.", group.Id);
|
||||
return false;
|
||||
}
|
||||
context.Groups.Remove(currentGroup);
|
||||
var groupIds = groups.Select(g => g.Id).ToList();
|
||||
|
||||
context.Groups.RemoveRange(groups);
|
||||
context.UserGroups.RemoveRange(context.UserGroups.Where(ug => groupIds.Contains(ug.GroupId)));
|
||||
context.RoleLinks.RemoveRange(context.RoleLinks.Where(rl => groupIds.Contains(rl.LinkId)));
|
||||
|
||||
var saveResult = await context.SaveChangesAsync(cancellationToken);
|
||||
return saveResult != 0;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace DotBased.AspNet.Authority.EFCore.Repositories;
|
|||
|
||||
public class UserRepository(IDbContextFactory<AuthorityContext> contextFactory, ILogger<UserRepository> logger) : RepositoryBase, IUserRepository
|
||||
{
|
||||
public async Task<QueryItems<AuthorityUserItem>> GetAuthorityUsersAsync(int limit = 20, int offset = 0, string search = "", CancellationToken cancellationToken = default)
|
||||
public async Task<QueryItems<AuthorityUserItem>> GetUsersAsync(int limit = 20, int offset = 0, string search = "", CancellationToken cancellationToken = default)
|
||||
{
|
||||
await using var context = await contextFactory.CreateDbContextAsync(cancellationToken);
|
||||
var query = context.Users.AsQueryable();
|
||||
|
@ -29,7 +29,7 @@ public class UserRepository(IDbContextFactory<AuthorityContext> contextFactory,
|
|||
return QueryItems<AuthorityUserItem>.Create(selected, totalCount, limit, offset);
|
||||
}
|
||||
|
||||
public async Task<AuthorityUser?> GetAuthorityUserByIdAsync(Guid id, CancellationToken cancellationToken = default)
|
||||
public async Task<AuthorityUser?> GetUserByIdAsync(Guid id, CancellationToken cancellationToken = default)
|
||||
{
|
||||
await using var context = await contextFactory.CreateDbContextAsync(cancellationToken);
|
||||
if (id == Guid.Empty)
|
||||
|
|
|
@ -38,7 +38,7 @@ public partial class AuthorityManager
|
|||
|
||||
public async Task<Result<QueryItems<AuthorityUserItem>>> SearchUsersAsync(string query, int maxResults = 20, int offset = 0, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var result = await UserRepository.GetAuthorityUsersAsync(maxResults, offset, query, cancellationToken);
|
||||
var result = await UserRepository.GetUsersAsync(maxResults, offset, query, cancellationToken);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,8 +7,9 @@ public interface IGroupRepository
|
|||
{
|
||||
public Task<QueryItems<AuthorityGroupItem>> GetGroupsAsync(int limit = 20, int offset = 0, string search = "", CancellationToken cancellationToken = default);
|
||||
public Task<AuthorityGroup?> GetGroupByIdAsync(string id, CancellationToken cancellationToken = default);
|
||||
public Task<bool> AddUsersToGroupAsync(List<AuthorityUser> users, AuthorityGroup group, CancellationToken cancellationToken = default);
|
||||
public Task<List<AuthorityGroup>> GetUserGroupsAsync(AuthorityUser user, CancellationToken cancellationToken = default);
|
||||
public Task<AuthorityGroup?> CreateGroupAsync(AuthorityGroup group, CancellationToken cancellationToken = default);
|
||||
public Task<AuthorityGroup?> UpdateGroupAsync(AuthorityGroup group, CancellationToken cancellationToken = default);
|
||||
public Task<bool> DeleteGroupAsync(AuthorityGroup group, CancellationToken cancellationToken = default);
|
||||
public Task<bool> DeleteGroupsAsync(List<AuthorityGroup> groups, CancellationToken cancellationToken = default);
|
||||
}
|
|
@ -5,8 +5,8 @@ namespace DotBased.AspNet.Authority.Repositories;
|
|||
|
||||
public interface IUserRepository
|
||||
{
|
||||
public Task<QueryItems<AuthorityUserItem>> GetAuthorityUsersAsync(int limit = 20, int offset = 0, string search = "", CancellationToken cancellationToken = default);
|
||||
public Task<AuthorityUser?> GetAuthorityUserByIdAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
public Task<QueryItems<AuthorityUserItem>> GetUsersAsync(int limit = 20, int offset = 0, string search = "", CancellationToken cancellationToken = default);
|
||||
public Task<AuthorityUser?> GetUserByIdAsync(Guid id, CancellationToken cancellationToken = default);
|
||||
public Task<AuthorityUser?> CreateUserAsync(AuthorityUser user, CancellationToken cancellationToken = default);
|
||||
public Task<AuthorityUser?> UpdateUserAsync(AuthorityUser user, CancellationToken cancellationToken = default);
|
||||
public Task<bool> DeleteUsersAsync(List<AuthorityUser> users, CancellationToken cancellationToken = default);
|
||||
|
|
Loading…
Reference in New Issue
Block a user