Table of Contents

Struct MailAnsweringAuditCursor

Namespace
MailFathom.Application.Retrieval.AskMail.Audit
Assembly
MailFathom.Application.dll

Marks where one page of an answering record ended, so the next page continues from it.

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

Remarks

The record is ordered newest first by completion instant, with the entry 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: the next page asks for entries beyond a known boundary, so a question answered between two requests neither shifts a window nor causes an entry 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, and a built cursor is how a caller would ask for a boundary this system never computed.

Fields

MaximumEncodedLength

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

Properties

CompletedAt

Gets the completion instant of the last entry the page returned.

EntryId

Gets the identity of that entry, which breaks a tie between two runs that ended together.

FilterFingerprint

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

Methods

After(DateTimeOffset, MailAnsweringAuditEntryId, string)

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

Encode()

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

TryDecode(string?, out MailAnsweringAuditCursor)

Reads a cursor a caller presented.