using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; using DataModels; using LinqToDB; using LinqToDB.Data; namespace UserService.DatabaseLayer.Repositories { public class UsersRepository : IUsersRepository { public UsersRepository() { DataConnection.DefaultSettings = new MySettings(); } /// public async Task> GetAllAsync(Expression>? predicate = null, CancellationToken token = default) { await using var db = new UserServiceDB(); return await db.Users.LoadWith(x=> x.Member).LoadWith(x=> x.Member.Node).WhereOrDefault(predicate).ToListAsync(token: token).ConfigureAwait(false); } /// public async Task GetAsync(Expression> predicate, CancellationToken token = default) { await using var db = new UserServiceDB(); var result = await db.Users.FirstOrDefaultAsync(predicate, token: token).ConfigureAwait(false); return result; } /// public async Task AddAsync(User entity, CancellationToken token = default) { await using var db = new UserServiceDB(); var nodeId = await db.Nodes.InsertWithInt32IdentityAsync(() => new Node {CommonName = "holger"}, token: token); await db.Members.InsertAsync(() => new Member {Id = nodeId}, token: token); await db.Users.InsertAsync(() => new User { Id = nodeId, FirstName = entity.FirstName, LastName = entity.LastName, IsActive = entity.IsActive }, token: token).ConfigureAwait(false); } /// public async Task UpdateAsync(User entity, CancellationToken token = default) { throw new NotImplementedException(); } /// public async Task DeleteAsync(User entity, CancellationToken token = default) { await using var db = new UserServiceDB(); await db.Users.DeleteAsync(x => x.Id == entity.Id, token: token); } } }