public static bool IsStreamDeletedEventOrLinkToStreamDeletedEvent(ResolvedEvent resolvedEvent, ReadEventResult resolveResult, out string deletedPartitionStreamId) { bool isDeletedStreamEvent; // If the event didn't resolve, we can't rely on it as a deleted event if (resolveResult != ReadEventResult.Success) { deletedPartitionStreamId = null; return(false); } if (resolvedEvent.IsLinkToDeletedStreamTombstone) { isDeletedStreamEvent = true; deletedPartitionStreamId = resolvedEvent.EventStreamId; } else { isDeletedStreamEvent = StreamDeletedHelper.IsStreamDeletedEvent( resolvedEvent.EventStreamId, resolvedEvent.EventType, resolvedEvent.Data, out deletedPartitionStreamId); } return(isDeletedStreamEvent); }
public static bool IsStreamDeletedEvent(ResolvedEvent resolvedEvent, out string deletedPartitionStreamId) { bool isDeletedStreamEvent; if (resolvedEvent.IsLinkToDeletedStreamTombstone) { isDeletedStreamEvent = true; deletedPartitionStreamId = resolvedEvent.EventStreamId; } else { isDeletedStreamEvent = StreamDeletedHelper.IsStreamDeletedEvent( resolvedEvent.EventStreamId, resolvedEvent.EventType, resolvedEvent.Data, out deletedPartitionStreamId); } return(isDeletedStreamEvent); }
public bool ProcessEvent( string partition, CheckpointTag eventPosition, string category1, ResolvedEvent data, out string newState, out string newSharedState, out EmittedEventEnvelope[] emittedEvents) { newSharedState = null; emittedEvents = null; newState = null; if (data.EventStreamId != data.PositionStreamId) { return(false); } var indexedEventType = data.EventType; if (indexedEventType == "$>") { return(false); } string positionStreamId; var isStreamDeletedEvent = StreamDeletedHelper.IsStreamDeletedEvent( data.PositionStreamId, data.EventType, data.Data, out positionStreamId); if (isStreamDeletedEvent) { indexedEventType = "$deleted"; } emittedEvents = new[] { new EmittedEventEnvelope( new EmittedDataEvent( _indexStreamPrefix + indexedEventType, Guid.NewGuid(), "$>", false, data.EventSequenceNumber + "@" + positionStreamId, isStreamDeletedEvent ? new ExtraMetaData(new Dictionary <string, JRaw> { { "$deleted", new JRaw(-1) } }) : null, eventPosition, expectedTag: null)) }; return(true); }
public bool ProcessEvent( string partition, CheckpointTag eventPosition, string category1, ResolvedEvent data, out string newState, out string newSharedState, out EmittedEventEnvelope[] emittedEvents) { newSharedState = null; emittedEvents = null; newState = null; string positionStreamId; var isStreamDeletedEvent = StreamDeletedHelper.IsStreamDeletedEvent( data.PositionStreamId, data.EventType, data.Data, out positionStreamId); var category = _streamCategoryExtractor.GetCategoryByStreamId(positionStreamId); if (category == null) { return(true); // handled but not interesting } string linkTarget; if (data.EventType == SystemEventTypes.LinkTo) { linkTarget = data.Data; } else { linkTarget = data.EventSequenceNumber + "@" + data.EventStreamId; } emittedEvents = new[] { new EmittedEventEnvelope( new EmittedLinkToWithRecategorization( _categoryStreamPrefix + category, Guid.NewGuid(), linkTarget, eventPosition, expectedTag: null, originalStreamId: positionStreamId, streamDeletedAt: isStreamDeletedEvent ? -1 : (int?)null)) }; return(true); }