using AutoMapper; using DbFirst.Domain.DomainEntities; using DbFirst.Domain.Repositories; using DbFirst.Infrastructure.ScaffoldEntities; using Microsoft.EntityFrameworkCore; namespace DbFirst.Infrastructure.Repositories; public class CatalogRepository : ICatalogRepository { private readonly ApplicationDbContext _db; private readonly IMapper _mapper; public CatalogRepository(ApplicationDbContext db, IMapper mapper) { _db = db; _mapper = mapper; } public async Task> GetAllAsync(CancellationToken cancellationToken = default) { var entities = await _db.TbmyCatalogs.AsNoTracking().ToListAsync(cancellationToken); return _mapper.Map>(entities); } public async Task GetByIdAsync(int id, CancellationToken cancellationToken = default) { var entity = await _db.TbmyCatalogs.AsNoTracking().FirstOrDefaultAsync(x => x.Guid == id, cancellationToken); return entity == null ? null : _mapper.Map(entity); } public async Task AddAsync(Catalog catalog, CancellationToken cancellationToken = default) { var entity = _mapper.Map(catalog); _db.TbmyCatalogs.Add(entity); await _db.SaveChangesAsync(cancellationToken); return _mapper.Map(entity); } public async Task UpdateAsync(int id, Catalog catalog, CancellationToken cancellationToken = default) { var entity = await _db.TbmyCatalogs.FirstOrDefaultAsync(x => x.Guid == id, cancellationToken); if (entity == null) { return false; } _mapper.Map(catalog, entity); entity.Guid = id; await _db.SaveChangesAsync(cancellationToken); return true; } public async Task DeleteAsync(int id, CancellationToken cancellationToken = default) { var entity = await _db.TbmyCatalogs.FirstOrDefaultAsync(x => x.Guid == id, cancellationToken); if (entity == null) { return false; } _db.TbmyCatalogs.Remove(entity); await _db.SaveChangesAsync(cancellationToken); return true; } }