Infrastructure repositories now inherit AbstractRepository and implement concrete mapping logic

This commit is contained in:
Veljko Tosic
2026-02-11 02:25:14 +01:00
parent c23e489db2
commit e7abe1eaed
8 changed files with 208 additions and 200 deletions

View File

@@ -1,63 +1,52 @@
using AipsCore.Domain.Models.WhiteboardMembership.External;
using AipsCore.Domain.Models.WhiteboardMembership.ValueObjects;
using AipsCore.Infrastructure.Persistence.Abstract;
using AipsCore.Infrastructure.Persistence.Db;
namespace AipsCore.Infrastructure.Persistence.WhiteboardMembership;
public class WhiteboardMembershipRepository : IWhiteboardMembershipRepository
public class WhiteboardMembershipRepository
: AbstractRepository<Domain.Models.WhiteboardMembership.WhiteboardMembership, WhiteboardMembershipId, WhiteboardMembership>,
IWhiteboardMembershipRepository
{
private readonly AipsDbContext _context;
public WhiteboardMembershipRepository(AipsDbContext context)
: base(context)
{
_context = context;
}
public async Task<Domain.Models.WhiteboardMembership.WhiteboardMembership?> Get(WhiteboardMembershipId whiteboardMembershipId, CancellationToken cancellationToken = default)
{
var whiteboardMembershipEntity = await _context.WhiteboardMemberships.FindAsync(new Guid(whiteboardMembershipId.IdValue));
if (whiteboardMembershipEntity is null) return null;
}
protected override Domain.Models.WhiteboardMembership.WhiteboardMembership MapToDomainEntity(WhiteboardMembership persistenceEntity)
{
return Domain.Models.WhiteboardMembership.WhiteboardMembership.Create(
whiteboardMembershipEntity.Id.ToString(),
whiteboardMembershipEntity.WhiteboardId.ToString(),
whiteboardMembershipEntity.UserId.ToString(),
whiteboardMembershipEntity.IsBanned,
whiteboardMembershipEntity.EditingEnabled,
whiteboardMembershipEntity.CanJoin,
whiteboardMembershipEntity.LastInteractedAt);
persistenceEntity.Id.ToString(),
persistenceEntity.WhiteboardId.ToString(),
persistenceEntity.UserId.ToString(),
persistenceEntity.IsBanned,
persistenceEntity.EditingEnabled,
persistenceEntity.CanJoin,
persistenceEntity.LastInteractedAt
);
}
public async Task Save(Domain.Models.WhiteboardMembership.WhiteboardMembership whiteboardMembership, CancellationToken cancellationToken = default)
protected override WhiteboardMembership MapToPersistenceEntity(Domain.Models.WhiteboardMembership.WhiteboardMembership domainEntity)
{
var whiteboardMembershipEntity = await _context.WhiteboardMemberships.FindAsync(new Guid(whiteboardMembership.Id.IdValue));
if (whiteboardMembershipEntity is not null)
return new WhiteboardMembership
{
whiteboardMembershipEntity.IsBanned = whiteboardMembership.IsBanned.IsBannedValue;
whiteboardMembershipEntity.EditingEnabled = whiteboardMembership.EditingEnabled.EditingEnabledValue;
whiteboardMembershipEntity.CanJoin = whiteboardMembership.CanJoin.CanJoinValue;
whiteboardMembershipEntity.LastInteractedAt = whiteboardMembership.LastInteractedAt.LastInteractedAtValue;
_context.Update(whiteboardMembershipEntity);
}
else
{
whiteboardMembershipEntity = new WhiteboardMembership()
{
Id = new Guid(whiteboardMembership.Id.IdValue),
WhiteboardId = new Guid(whiteboardMembership.WhiteboardId.IdValue),
Whiteboard = null,
UserId = new Guid(whiteboardMembership.UserId.IdValue),
User = null,
IsBanned = whiteboardMembership.IsBanned.IsBannedValue,
EditingEnabled = whiteboardMembership.EditingEnabled.EditingEnabledValue,
CanJoin = whiteboardMembership.CanJoin.CanJoinValue,
LastInteractedAt = whiteboardMembership.LastInteractedAt.LastInteractedAtValue
};
_context.Add(whiteboardMembershipEntity);
}
Id = new Guid(domainEntity.Id.IdValue),
WhiteboardId = new Guid(domainEntity.WhiteboardId.IdValue),
UserId = new Guid(domainEntity.UserId.IdValue),
IsBanned = domainEntity.IsBanned.IsBannedValue,
EditingEnabled = domainEntity.EditingEnabled.EditingEnabledValue,
CanJoin = domainEntity.CanJoin.CanJoinValue,
LastInteractedAt = domainEntity.LastInteractedAt.LastInteractedAtValue
};
}
protected override void UpdatePersistenceEntity(WhiteboardMembership persistenceEntity, Domain.Models.WhiteboardMembership.WhiteboardMembership domainEntity)
{
persistenceEntity.IsBanned = domainEntity.IsBanned.IsBannedValue;
persistenceEntity.EditingEnabled = domainEntity.EditingEnabled.EditingEnabledValue;
persistenceEntity.CanJoin = domainEntity.CanJoin.CanJoinValue;
persistenceEntity.LastInteractedAt = domainEntity.LastInteractedAt.LastInteractedAtValue;
}
}