Abstract base for new domain

This commit is contained in:
Veljko Tosic
2026-02-11 02:19:42 +01:00
parent 16b0a1bed8
commit a4245fdd93
3 changed files with 44 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
using AipsCore.Domain.Common.ValueObjects;
namespace AipsCore.Domain.Abstract;
public abstract class DomainEntity<TId> where TId : DomainId
{
private readonly List<IDomainEvent> _domainEvents = [];
public TId Id { get; init; }
protected DomainEntity()
{
}
protected DomainEntity(TId id)
{
Id = id;
}
public IReadOnlyList<IDomainEvent> GetDomainEvents() => _domainEvents.ToList();
public void ClearDomainEvents() => _domainEvents.Clear();
protected void RaiseDomainEvent(IDomainEvent domainEvent) => _domainEvents.Add(domainEvent);
}

View File

@@ -0,0 +1,12 @@
using AipsCore.Domain.Common.ValueObjects;
namespace AipsCore.Domain.Abstract;
public interface IAbstractRepository<TEntity, in TId>
where TEntity : DomainEntity<TId>
where TId : DomainId
{
Task<TEntity?> GetByIdAsync(TId id, CancellationToken cancellationToken = default);
Task SaveAsync(TEntity entity, CancellationToken cancellationToken = default);
Task AddAsync(TEntity entity, CancellationToken cancellationToken = default);
}

View File

@@ -0,0 +1,6 @@
namespace AipsCore.Domain.Abstract;
public interface IDomainEvent
{
}