Table of Contents

Struct MailRuleExecutionCursor

Namespace
MailFathom.Application.Rules.History
Assembly
MailFathom.Application.dll

Marks where one page of the rule history ended, so the next page continues from it.

public readonly record struct MailRuleExecutionCursor : IEquatable<MailRuleExecutionCursor>
Implements
Inherited Members

Remarks

The history is ordered newest first by evaluation instant, with the execution identifier breaking a tie, and this pairs those two values with a fingerprint of the filters the page was read under. The pair is what makes pagination keyset-based rather than offset-based: a pass that records executions between two requests neither shifts a window nor causes an execution to be skipped or repeated. The fingerprint is what makes the boundary meaningful, because a position names a page edge only within the filtered set it was computed for.

It carries no secret and needs no signature: every value in it is one the caller already supplied or already received. Encoding is about opacity rather than protection — a client that cannot read a cursor does not build one.

Fields

MaximumEncodedLength

The greatest number of characters an encoded cursor may carry before it is refused unread.

Properties

EvaluatedAt

Gets the evaluation instant of the last execution the page returned.

ExecutionId

Gets the identity of that execution, which breaks a tie between two recorded in one instant.

FilterFingerprint

Gets the fingerprint of the filters this cursor was issued for.

Methods

After(DateTimeOffset, MailRuleExecutionId, string)

Creates the cursor that continues a walk after one position in the history.

Encode()

Writes the cursor as the opaque string a caller presents to continue the walk.

TryDecode(string?, out MailRuleExecutionCursor)

Reads a cursor a caller presented.