using MessengerApi.Contracts.Factories; using MessengerApi.Contracts.Models.Scoped; using MessengerApi.Db; using MessengerApi.Db.Contracts.Repositories; using MessengerApi.Db.Repositories; namespace MessengerApi.Models.Scoped { public class UnitOfWork : IUnitOfWork { private MessengerDbContext context; public IUserRepository Users { get; } public IUserRouteRepository UserRoutes { get; } public IMessageRepository Messages { get; } public UnitOfWork( IDbContextFactory dbContextFactory) { this.context = dbContextFactory.CreateDbContext(); this.Users = new UserRepository(this.context.Users); this.UserRoutes = new UserRouteRepository(this.context.UserRoutes); this.Messages = new MessageRepository(this.context.Messages); } public Task SaveChanges(CancellationToken ct = default) { return this.context.SaveChangesAsync(ct); } } }