Пример #1
0
        public static bool IsStreamDeletedEvent(
            string streamOrMetaStreamId, string eventType, string eventData, out string deletedPartitionStreamId)
        {
            if (string.IsNullOrEmpty(streamOrMetaStreamId))
            {
                deletedPartitionStreamId = null;
                return(false);
            }

            bool isMetaStream;

            if (SystemStreams.IsMetastream(streamOrMetaStreamId))
            {
                isMetaStream             = true;
                deletedPartitionStreamId = streamOrMetaStreamId.Substring("$$".Length);
            }
            else
            {
                isMetaStream             = false;
                deletedPartitionStreamId = streamOrMetaStreamId;
            }

            var isStreamDeletedEvent = false;

            if (isMetaStream)
            {
                if (eventType == SystemEventTypes.StreamMetadata)
                {
                    var metadata = StreamMetadata.FromJson(eventData);
                    //NOTE: we do not ignore JSON deserialization exceptions here assuming that metadata stream events must be deserializable

                    if (metadata.TruncateBefore == EventNumber.DeletedStream)
                    {
                        isStreamDeletedEvent = true;
                    }
                }
            }
            else
            {
                if (eventType == SystemEventTypes.StreamDeleted)
                {
                    isStreamDeletedEvent = true;
                }
            }

            return(isStreamDeletedEvent);
        }