using Koogle.Domain.Entities; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Koogle.Domain.Interfaces { /// /// Generisches Repository-Interface für grundlegende CRUD-Operationen. /// /// Der Entitätstyp, muss von BaseEntity erben. public interface IRepository where T : BaseEntity { /// /// Ruft eine Entität anhand ihrer ID ab. /// /// Die eindeutige ID der Entität. /// Token zur Abbruchsteuerung. /// Die gefundene Entität oder null. Task GetByIdAsync(int id, CancellationToken cancellationToken = default); /// /// Ruft alle nicht gelöschten Entitäten ab. /// /// Token zur Abbruchsteuerung. /// Eine Liste aller aktiven Entitäten. Task> GetAllAsync(CancellationToken cancellationToken = default); /// /// Fügt eine neue Entität hinzu. /// /// Die hinzuzufügende Entität. /// Token zur Abbruchsteuerung. /// Die hinzugefügte Entität mit generierter ID. Task AddAsync(T entity, CancellationToken cancellationToken = default); /// /// Aktualisiert eine bestehende Entität. /// /// Die zu aktualisierende Entität. /// Token zur Abbruchsteuerung. Task UpdateAsync(T entity, CancellationToken cancellationToken = default); /// /// Führt ein Soft-Delete der Entität durch (setzt IsDeleted = true). /// /// Die ID der zu löschenden Entität. /// Token zur Abbruchsteuerung. Task DeleteAsync(int id, CancellationToken cancellationToken = default); } }