[CHANGE] Reworking Result monads
This commit is contained in:
@@ -6,7 +6,7 @@ namespace DotBased.AspNet.Authority.EFCore.Repositories;
|
||||
|
||||
public class GroupRepository(IDbContextFactory<AuthorityContext> contextFactory) : RepositoryBase, IGroupRepository
|
||||
{
|
||||
public async Task<ListResult<AuthorityGroupItem>> GetGroupsAsync(int limit = 20, int offset = 0, string search = "", CancellationToken cancellationToken = default)
|
||||
public async Task<ListResultOld<AuthorityGroupItem>> GetGroupsAsync(int limit = 20, int offset = 0, string search = "", CancellationToken cancellationToken = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -22,7 +22,7 @@ public class GroupRepository(IDbContextFactory<AuthorityContext> contextFactory)
|
||||
Id = g.Id,
|
||||
Name = g.Name
|
||||
}).ToListAsync(cancellationToken);
|
||||
return ListResult<AuthorityGroupItem>.Ok(select, total, limit, offset);
|
||||
return ListResultOld<AuthorityGroupItem>.Ok(select, total, limit, offset);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -30,17 +30,17 @@ public class GroupRepository(IDbContextFactory<AuthorityContext> contextFactory)
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<Result<AuthorityGroup>> GetGroupByIdAsync(string id, CancellationToken cancellationToken = default)
|
||||
public async Task<ResultOld<AuthorityGroup>> GetGroupByIdAsync(string id, CancellationToken cancellationToken = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
await using var context = await contextFactory.CreateDbContextAsync(cancellationToken);
|
||||
if (!Guid.TryParse(id, out var groupId))
|
||||
{
|
||||
return Result<AuthorityGroup>.Failed("Invalid group id");
|
||||
return ResultOld<AuthorityGroup>.Failed("Invalid group id");
|
||||
}
|
||||
var group = await context.Groups.Where(g => g.Id == groupId).Include(g => g.Attributes).FirstOrDefaultAsync(cancellationToken: cancellationToken);
|
||||
return Result<AuthorityGroup>.HandleResult(group, "Group not found");
|
||||
return ResultOld<AuthorityGroup>.HandleResult(group, "Group not found");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -48,14 +48,14 @@ public class GroupRepository(IDbContextFactory<AuthorityContext> contextFactory)
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<ListResult<AuthorityGroup>> GetUserGroupsAsync(AuthorityUser user, CancellationToken cancellationToken = default)
|
||||
public async Task<ListResultOld<AuthorityGroup>> GetUserGroupsAsync(AuthorityUser user, CancellationToken cancellationToken = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
await using var context = await contextFactory.CreateDbContextAsync(cancellationToken);
|
||||
var userJoinGroups = context.UserGroups.Where(ug => ug.UserId == user.Id).Select(ug => ug.GroupId);
|
||||
var userGroups = context.Groups.Where(g => userJoinGroups.Contains(g.Id));
|
||||
return ListResult<AuthorityGroup>.Ok(userGroups, userGroups.Count());
|
||||
return ListResultOld<AuthorityGroup>.Ok(userGroups, userGroups.Count());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -63,18 +63,18 @@ public class GroupRepository(IDbContextFactory<AuthorityContext> contextFactory)
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<Result<AuthorityGroup>> CreateGroupAsync(AuthorityGroup group, CancellationToken cancellationToken = default)
|
||||
public async Task<ResultOld<AuthorityGroup>> CreateGroupAsync(AuthorityGroup group, CancellationToken cancellationToken = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
await using var context = await contextFactory.CreateDbContextAsync(cancellationToken);
|
||||
if (group.Id == Guid.Empty)
|
||||
{
|
||||
return Result<AuthorityGroup>.Failed("Id cannot be empty.");
|
||||
return ResultOld<AuthorityGroup>.Failed("Id cannot be empty.");
|
||||
}
|
||||
var entry = context.Groups.Add(group);
|
||||
var saveResult = await context.SaveChangesAsync(cancellationToken);
|
||||
return saveResult <= 0 ? Result<AuthorityGroup>.Failed("Failed to create group.") : Result<AuthorityGroup>.Ok(entry.Entity);
|
||||
return saveResult <= 0 ? ResultOld<AuthorityGroup>.Failed("Failed to create group.") : ResultOld<AuthorityGroup>.Ok(entry.Entity);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -82,7 +82,7 @@ public class GroupRepository(IDbContextFactory<AuthorityContext> contextFactory)
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<Result<AuthorityGroup>> UpdateGroupAsync(AuthorityGroup group, CancellationToken cancellationToken = default)
|
||||
public async Task<ResultOld<AuthorityGroup>> UpdateGroupAsync(AuthorityGroup group, CancellationToken cancellationToken = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -90,17 +90,17 @@ public class GroupRepository(IDbContextFactory<AuthorityContext> contextFactory)
|
||||
var currentGroup = await context.Groups.FirstOrDefaultAsync(g => g.Id == group.Id ,cancellationToken);
|
||||
if (currentGroup == null)
|
||||
{
|
||||
return Result<AuthorityGroup>.Failed("Group not found.");
|
||||
return ResultOld<AuthorityGroup>.Failed("Group not found.");
|
||||
}
|
||||
|
||||
if (currentGroup.Version != group.Version)
|
||||
{
|
||||
return Result<AuthorityGroup>.Failed("Group version does not match, version validation failed!");
|
||||
return ResultOld<AuthorityGroup>.Failed("Group version does not match, version validation failed!");
|
||||
}
|
||||
|
||||
var entry = context.Groups.Update(group);
|
||||
var saveResult = await context.SaveChangesAsync(cancellationToken);
|
||||
return saveResult <= 0 ? Result<AuthorityGroup>.Failed("Failed to update group.") : Result<AuthorityGroup>.Ok(entry.Entity);
|
||||
return saveResult <= 0 ? ResultOld<AuthorityGroup>.Failed("Failed to update group.") : ResultOld<AuthorityGroup>.Ok(entry.Entity);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -108,7 +108,7 @@ public class GroupRepository(IDbContextFactory<AuthorityContext> contextFactory)
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<Result> DeleteGroupAsync(AuthorityGroup group, CancellationToken cancellationToken = default)
|
||||
public async Task<ResultOld> DeleteGroupAsync(AuthorityGroup group, CancellationToken cancellationToken = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -116,11 +116,11 @@ public class GroupRepository(IDbContextFactory<AuthorityContext> contextFactory)
|
||||
var currentGroup = await context.Groups.FirstOrDefaultAsync(g => g.Id == group.Id, cancellationToken);
|
||||
if (currentGroup == null)
|
||||
{
|
||||
return Result.Failed("Group not found, cannot delete group!");
|
||||
return ResultOld.Failed("Group not found, cannot delete group!");
|
||||
}
|
||||
context.Groups.Remove(currentGroup);
|
||||
var saveResult = await context.SaveChangesAsync(cancellationToken);
|
||||
return saveResult <= 0 ? Result.Failed("Failed to delete group.") : Result.Ok();
|
||||
return saveResult <= 0 ? ResultOld.Failed("Failed to delete group.") : ResultOld.Ok();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
Reference in New Issue
Block a user