Beispiel #1
0
        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);
        }
Beispiel #3
0
        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());
        }