Refactor ReadHistoryQuery and optimize repository queries

- Changed `EnvelopeId` in `ReadHistoryQuery` to nullable
  for improved flexibility in queries.
- Introduced `withReceiver` variable in `HistoryController`
  to enhance query logic for retrieving history records.
- Updated `EnvelopeHistoryRepository` to use `AsNoTracking()`
  for better performance in read-only scenarios.
This commit is contained in:
Developer 02 2025-05-06 23:23:33 +02:00
parent 27d9a149bc
commit 21859ca6e6
3 changed files with 4 additions and 2 deletions

View File

@ -13,7 +13,7 @@ namespace EnvelopeGenerator.Application.Histories.Queries.Read;
/// <param name="Related">Abfrage, die angibt, worauf sich der Datensatz bezieht. Ob er sich auf den Empfänger, den Sender oder das System bezieht, wird durch 0, 1 bzw. 2 dargestellt.</param> /// <param name="Related">Abfrage, die angibt, worauf sich der Datensatz bezieht. Ob er sich auf den Empfänger, den Sender oder das System bezieht, wird durch 0, 1 bzw. 2 dargestellt.</param>
/// <param name="OnlyLast">Abfrage zur Steuerung, ob nur der aktuelle Status oder der gesamte Datensatz zurückgegeben wird.</param> /// <param name="OnlyLast">Abfrage zur Steuerung, ob nur der aktuelle Status oder der gesamte Datensatz zurückgegeben wird.</param>
public record ReadHistoryQuery( public record ReadHistoryQuery(
int EnvelopeId, int? EnvelopeId = null,
ReadEnvelopeQuery? Envelope = null, ReadEnvelopeQuery? Envelope = null,
ReadReceiverQuery? Receiver = null, ReadReceiverQuery? Receiver = null,
Constants.ReferenceType? Related = null, Constants.ReferenceType? Related = null,

View File

@ -131,6 +131,8 @@ public class HistoryController : ControllerBase
[Authorize] [Authorize]
public async Task<IActionResult> GetAllAsync([FromQuery] ReadHistoryQuery history) public async Task<IActionResult> GetAllAsync([FromQuery] ReadHistoryQuery history)
{ {
bool withReceiver = false; bool withReceiver = false;
bool withSender = false; bool withSender = false;

View File

@ -13,7 +13,7 @@ public class EnvelopeHistoryRepository : CRUDRepository<EnvelopeHistory, long, E
private IQueryable<EnvelopeHistory> By(int? envelopeId = null, string? userReference = null, int? status = null, bool withSender = false, bool withReceiver = false) private IQueryable<EnvelopeHistory> By(int? envelopeId = null, string? userReference = null, int? status = null, bool withSender = false, bool withReceiver = false)
{ {
var query = _dbSet.AsQueryable(); var query = _dbSet.AsNoTracking();
if (envelopeId is not null) if (envelopeId is not null)
query = query.Where(eh => eh.EnvelopeId == envelopeId); query = query.Where(eh => eh.EnvelopeId == envelopeId);