public async Task <AllCommittedEventsPage> LoadAllCommittedEvents( GlobalPosition globalPosition, int pageSize, CancellationToken cancellationToken) { var startPosition = globalPosition.IsStart ? 0 : long.Parse(globalPosition.Value); var endPosition = startPosition + pageSize; const string sql = @" SELECT GlobalSequenceNumber, BatchId, AggregateId, AggregateName, Data, Metadata, AggregateSequenceNumber FROM EventFlow WHERE GlobalSequenceNumber >= @FromId AND GlobalSequenceNumber <= @ToId ORDER BY GlobalSequenceNumber ASC;"; var eventDataModels = await _connection.QueryAsync <EventDataModel>( Label.Named("postgresql-fetch-events"), cancellationToken, sql, new { FromId = startPosition, ToId = endPosition, }) .ConfigureAwait(false); var nextPosition = eventDataModels.Any() ? eventDataModels.Max(e => e.GlobalSequenceNumber) + 1 : startPosition; return(new AllCommittedEventsPage(new GlobalPosition(nextPosition.ToString()), eventDataModels)); }
public async Task <long?> ExecuteQueryAsync(ThingyGetVersionQuery query, CancellationToken cancellationToken) { var readModels = await _postgreSqlConnection.QueryAsync <PostgreSqlThingyReadModel>( Label.Named("postgresql-fetch-test-read-model"), cancellationToken, "SELECT * FROM \"ReadModel-ThingyAggregate\" WHERE AggregateId = @AggregateId;", new { AggregateId = query.ThingyId.Value }) .ConfigureAwait(false); return(readModels.SingleOrDefault()?.LastAggregateSequenceNumber); }
public async Task <IReadOnlyCollection <ThingyMessage> > ExecuteQueryAsync(ThingyGetMessagesQuery query, CancellationToken cancellationToken) { var readModels = await _postgreSqlConnection.QueryAsync <PostgreSqlThingyMessageReadModel>( Label.Named("postgresql-fetch-thingy-message-read-model"), cancellationToken, "SELECT * FROM \"ReadModel-ThingyMessage\" WHERE ThingyId = @ThingyId;", new { ThingyId = query.ThingyId.Value }) .ConfigureAwait(false); return(readModels .Select(rm => rm.ToThingyMessage()) .ToList()); }