protected override async Task <SetStreamMetadataResult> SetStreamMetadataInternal( string streamId, int expectedStreamMetadataVersion, int?maxAge, int?maxCount, string metadataJson, CancellationToken cancellationToken) { using (_lock.UseWriteLock()) { string metaStreamId = $"$${streamId}"; var metadataMessage = new MetadataMessage { StreamId = streamId, MaxAge = maxAge, MaxCount = maxCount, MetaJson = metadataJson }; var json = SimpleJson.SerializeObject(metadataMessage); var messageId = MetadataMessageIdGenerator.Create(metaStreamId, expectedStreamMetadataVersion, json); var newStreamMessage = new NewStreamMessage(messageId, "$stream-metadata", json); var result = AppendToStreamInternal(metaStreamId, expectedStreamMetadataVersion, new[] { newStreamMessage }); await CheckStreamMaxCount(streamId, metadataMessage.MaxCount, cancellationToken); return(new SetStreamMetadataResult(result.CurrentVersion)); } }
protected override async Task <SetStreamMetadataResult> SetStreamMetadataInternal( string streamId, int expectedStreamMetadataVersion, int?maxAge, int?maxCount, string metadataJson, CancellationToken cancellationToken) { MsSqlAppendResult result; using (var connection = _createConnection()) { var streamIdInfo = new StreamIdInfo(streamId); await connection.OpenAsync(cancellationToken).NotOnCapturedContext(); using (var transaction = connection.BeginTransaction()) { var metadataMessage = new MetadataMessage { StreamId = streamId, MaxAge = maxAge, MaxCount = maxCount, MetaJson = metadataJson }; var json = SimpleJson.SerializeObject(metadataMessage); var messageId = MetadataMessageIdGenerator.Create( streamId, expectedStreamMetadataVersion, json); var newmessage = new NewStreamMessage(messageId, "$stream-metadata", json); result = await AppendToStreamInternal( connection, transaction, streamIdInfo.MetadataSqlStreamId, expectedStreamMetadataVersion, new[] { newmessage }, cancellationToken); using (var command = new SqlCommand(_scripts.SetStreamMetadata, connection, transaction)) { command.Parameters.AddWithValue("streamId", streamIdInfo.SqlStreamId.Id); command.Parameters.AddWithValue("streamIdOriginal", streamIdInfo.SqlStreamId.IdOriginal); command.Parameters.Add("maxAge", SqlDbType.Int); command.Parameters["maxAge"].Value = maxAge ?? -1; command.Parameters.Add("maxCount", SqlDbType.Int); command.Parameters["maxCount"].Value = maxCount ?? -1; await command.ExecuteNonQueryAsync(cancellationToken); } transaction.Commit(); } } await CheckStreamMaxCount(streamId, maxCount, cancellationToken); return(new SetStreamMetadataResult(result.CurrentVersion)); }
public static MySqlParameter MetadataMessageMessageId( MySqlStreamId metadataMySqlStreamId, int expectedStreamMetadataVersion, string metadataMessageJsonData) => MessageIdInternal( MetadataMessageIdGenerator.Create( metadataMySqlStreamId.IdOriginal, expectedStreamMetadataVersion, metadataMessageJsonData), "_metadata_message_message_id");
protected override async Task <SetStreamMetadataResult> SetStreamMetadataInternal( string streamId, int expectedStreamMetadataVersion, int?maxAge, int?maxCount, string metadataJson, CancellationToken cancellationToken) { MsSqlAppendResult result; using (var connection = _createConnection()) { await connection.OpenAsync(cancellationToken).NotOnCapturedContext(); using (var transaction = connection.BeginTransaction()) { var streamIdInfo = new StreamIdInfo(streamId); var metadataMessage = new MetadataMessage { StreamId = streamId, MaxAge = maxAge, MaxCount = maxCount, MetaJson = metadataJson }; var json = SimpleJson.SerializeObject(metadataMessage); var messageId = MetadataMessageIdGenerator.Create( streamIdInfo.MetadataSqlStreamId.IdOriginal, expectedStreamMetadataVersion, json); var message = new NewStreamMessage(messageId, "$stream-metadata", json); result = await AppendToStreamInternal( connection, transaction, streamIdInfo.MetadataSqlStreamId, expectedStreamMetadataVersion, new[] { message }, cancellationToken); transaction.Commit(); } } await CheckStreamMaxCount(streamId, maxCount, cancellationToken); return(new SetStreamMetadataResult(result.CurrentVersion)); }
public static NpgsqlParameter MetadataStreamMessage( PostgresqlStreamId streamId, int expectedVersion, MetadataMessage value) { var jsonData = SimpleJson.SerializeObject(value); return(new NpgsqlParameter <PostgresNewStreamMessage> { TypedValue = PostgresNewStreamMessage.FromNewStreamMessage( new NewStreamMessage( MetadataMessageIdGenerator.Create(streamId.IdOriginal, expectedVersion, jsonData), "$stream-metadata", jsonData)) }); }
protected override async Task <SetStreamMetadataResult> SetStreamMetadataInternal( string streamId, int expectedVersion, int?maxAge, int?maxCount, string metadataJson, CancellationToken cancellationToken) { GuardAgainstDisposed(); cancellationToken.ThrowIfCancellationRequested(); var metadataMessage = new MetadataMessage { StreamId = streamId, MaxAge = maxAge, MaxCount = maxCount, MetaJson = metadataJson }; var json = SimpleJson.SerializeObject(metadataMessage); var messageId = MetadataMessageIdGenerator.Create( streamId, expectedVersion, json ); var message = new NewStreamMessage(messageId, "$stream-metadata", json); var idinfo = new StreamIdInfo(streamId); var result = await AppendToStreamInternal( idinfo.MetadataSqlStreamId.IdOriginal, expectedVersion, new[] { message }, cancellationToken).NotOnCapturedContext(); CheckStreamMaxCount(streamId, maxCount, cancellationToken).Wait(cancellationToken); return(new SetStreamMetadataResult(result.CurrentVersion)); }