public void DeleteStream(string bucketId, string streamId)
        {
            Logger.Warn(Messages.DeletingStream, streamId, bucketId);
            TryMongo(() =>
            {
                PersistedStreamHeads.Remove(
                    Query.EQ(MongoStreamHeadFields.Id, new BsonDocument {
                    { MongoStreamHeadFields.BucketId, bucketId },
                    { MongoStreamHeadFields.StreamId, streamId }
                })
                    );

                PersistedSnapshots.Remove(
                    Query.EQ(MongoShapshotFields.Id, new BsonDocument {
                    { MongoShapshotFields.BucketId, bucketId },
                    { MongoShapshotFields.StreamId, streamId }
                })
                    );

                PersistedCommits.Update(
                    Query.And(
                        Query.EQ(MongoCommitFields.BucketId, bucketId),
                        Query.EQ(MongoCommitFields.StreamId, streamId)
                        ),
                    Update.Set(MongoCommitFields.BucketId, MongoSystemBuckets.RecycleBin),
                    UpdateFlags.Multi
                    );
            });
        }
        public virtual void MarkCommitAsDispatched(ICommit commit)
        {
            Logger.Debug(Messages.MarkingCommitAsDispatched, commit.CommitId);

            TryMongo(() =>
            {
                IMongoQuery query    = commit.ToMongoCommitIdQuery();
                UpdateBuilder update = Update.Set(MongoCommitFields.Dispatched, true);
                PersistedCommits.Update(query, update);
            });
        }