Event Store - Truncate before

要使用 Event Store 的 Truncate before 刪除指定 Event 編號以前的 Event,可以設定 StreamMetadata。

透過 StreamMetadata 的 truncateBefore 指定編號多少以前的 Event 要被刪除,然後透過 Connection.SetStreamMetadataAsync,帶入 Stream 的名稱、ExpectedVersion、以及剛設定好的 StreamMetadata。

1
2
3
4
...
var streamMetaData = StreamMetadata.Create(truncateBefore: eventID);

conn.SetStreamMetadataAsync(streamName, ExpectedVersion.StreamExists, streamMetaData).Wait();


像是筆者這邊準備了一個內含 100 筆 Event 的 Stream。


設定 Stream 的 truncateBefore metadata 為 85。

1
2
3
4
5
6
7
8
9
10
11
using EventStore.ClientAPI;
...
using (var conn = EventStoreConnection.Create(connectionString, connectionName))
{
conn.ConnectAsync().Wait();

var streamName = "MyStream";
var streamMetaData = StreamMetadata.Create(truncateBefore: 85);

conn.SetStreamMetadataAsync(streamName, ExpectedVersion.StreamExists, streamMetaData).Wait();
}


運行後重整, Number 85 以下的 Event 就會被刪除。