using DD.Persistence.Database.Entity; using DD.Persistence.Models; using DD.Persistence.Repositories; using Mapster; using Microsoft.EntityFrameworkCore; namespace DD.Persistence.Repository.Repositories; public class DataSchemeRepository : IDataSchemeRepository { protected DbContext db; public DataSchemeRepository(DbContext db) { this.db = db; } protected virtual IQueryable GetQueryReadOnly() => db.Set(); public virtual async Task Add(DataSchemeDto dataSourceSystemDto, CancellationToken token) { var entity = dataSourceSystemDto.Adapt(); await db.Set().AddAsync(entity, token); await db.SaveChangesAsync(token); } public virtual async Task Get(Guid dataSchemeId, CancellationToken token) { var query = GetQueryReadOnly() .Where(e => e.DiscriminatorId == dataSchemeId); var entity = await query.ToArrayAsync(); var dto = entity.Select(e => e.Adapt()).FirstOrDefault(); return dto; } }