From 6a1d069d9865c9612dfcb97f31ac2a2cb0d5aec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Holger=20B=C3=B6rchers?= Date: Fri, 11 Sep 2020 22:46:29 +0200 Subject: [PATCH] refactoring: reorganize code --- .../Repositories/BaseRepository.cs | 37 +++++++++---------- .../Repositories/SecurityGroupsRepository.cs | 19 ++++++++-- 2 files changed, 34 insertions(+), 22 deletions(-) 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