using FreeTubeSync.Database; using Microsoft.EntityFrameworkCore; namespace FreeTubeSync; public class Repository : IRepository where TEntity : class { private readonly DataContext _context; private readonly DbSet _dbSet; public Repository(DataContext context) { _context = context; _dbSet = _context.Set(); } public async Task AddAsync(TEntity entity, CancellationToken ct, bool sync = true) { _dbSet.Add(entity); if(sync) await _context.SaveChangesAsync(ct); } public async Task UpdateAsync(TEntity entity, CancellationToken ct, bool sync = true) { _dbSet.Attach(entity); _context.Entry(entity).State = EntityState.Modified; if (sync) await _context.SaveChangesAsync(ct); } public async Task DeleteAsync(TEntity entity, CancellationToken ct, bool sync = true) { _dbSet.Remove(entity); if (sync) await _context.SaveChangesAsync(ct); } public async Task GetByIdAsync(string id, CancellationToken ct) { return await _dbSet.FindAsync(id, ct); } public async Task> GetAllAsync(CancellationToken ct) { return await _dbSet.ToListAsync(ct); } }