diff --git a/UserService.DatabaseLayer/Repositories/BaseRepository.cs b/UserService.DatabaseLayer/Repositories/BaseRepository.cs index 36819f9..9042c1c 100644 --- a/UserService.DatabaseLayer/Repositories/BaseRepository.cs +++ b/UserService.DatabaseLayer/Repositories/BaseRepository.cs @@ -1,11 +1,12 @@ #nullable enable + +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; using UserService.DatabaseLayer.DataModels; using UserService.Infrastructure.DataModels; @@ -13,13 +14,26 @@ namespace UserService.DatabaseLayer.Repositories { public class BaseRepository where T : Node { - protected Func> Context { get; } - protected BaseRepository(Func> context) { Context = context; } + protected Func> Context { get; } + public async Task AddAsync(T entity, CancellationToken token = default) + { + await using var db = new UserServiceDbContext(); + await Context(db).AddAsync(@entity, token).ConfigureAwait(false); + await db.SaveChangesAsync(token).ConfigureAwait(false); + } + + public async Task DeleteAsync(T entity, CancellationToken token = default) + { + await using var db = new UserServiceDbContext(); + Context(db).Remove(entity); + await db.SaveChangesAsync(token).ConfigureAwait(false); + } + public virtual async Task> GetAllAsync(Expression>? predicate = null, CancellationToken token = default) { await using var db = new UserServiceDbContext(); @@ -31,27 +45,12 @@ namespace UserService.DatabaseLayer.Repositories await using var db = new UserServiceDbContext(); return await Context(db).Include(x => x.Parent).FirstOrDefaultAsync(predicate, token).ConfigureAwait(false); } - - public async Task AddAsync(T entity, CancellationToken token = default) - { - await using var db = new UserServiceDbContext(); - await Context(db).AddAsync(@entity, token).ConfigureAwait(false); - await db.SaveChangesAsync(token).ConfigureAwait(false); - } - public async Task UpdateAsync(T entity, CancellationToken token = default) { await using var db = new UserServiceDbContext(); Context(db).Update(entity); - var items= await db.SaveChangesAsync(token).ConfigureAwait(false); + var items = await db.SaveChangesAsync(token).ConfigureAwait(false); return items > 0; } - - public async Task DeleteAsync(T entity, CancellationToken token = default) - { - await using var db = new UserServiceDbContext(); - Context(db).Remove(entity); - await db.SaveChangesAsync(token).ConfigureAwait(false); - } } } \ No newline at end of file diff --git a/UserService.DatabaseLayer/Repositories/SecurityGroupsRepository.cs b/UserService.DatabaseLayer/Repositories/SecurityGroupsRepository.cs index cebc343..6ea101d 100644 --- a/UserService.DatabaseLayer/Repositories/SecurityGroupsRepository.cs +++ b/UserService.DatabaseLayer/Repositories/SecurityGroupsRepository.cs @@ -1,9 +1,10 @@ -using System; +using Microsoft.EntityFrameworkCore; +using System; using System.Collections.Generic; +using System.Linq; using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; using UserService.DatabaseLayer.DataModels; using UserService.Infrastructure.DataModels; @@ -18,8 +19,20 @@ namespace UserService.DatabaseLayer.Repositories public override async Task> GetAllAsync(Expression>? predicate = null, CancellationToken token = default) { await using var db = new UserServiceDbContext(); - return await Context(db).Include(x => x.Parent).WhereOrDefault(predicate).ToListAsync(token).ConfigureAwait(false); + return await Context(db) + .Include(x => x.Parent) + .Include(x => x.Members) + .WhereOrDefault(predicate) + .ToListAsync(token).ConfigureAwait(false); } + public override async Task GetAsync(Expression> predicate, CancellationToken token = default) + { + await using var db = new UserServiceDbContext(); + return await Context(db) + .Include(x => x.Parent) + .Include(x => x.Members) + .FirstOrDefaultAsync(predicate, token).ConfigureAwait(false); + } } } \ No newline at end of file