Table of Contents

Class SupportCaseReadEntity

Namespace
Tharga.Team.MongoDB
Assembly
Tharga.Team.MongoDB.dll

How far one person has read a case's transcript.

public record SupportCaseReadEntity : IEquatable<SupportCaseReadEntity>
Inheritance
SupportCaseReadEntity
Implements
Inherited Members

Remarks

Embedded, and bounded by the number of participants in one case - not one row per user per case across the whole system, which is what a separate collection would become. Members embed in a team and the transcript embeds in a case for the same reason.

Keyed on the sequence, not a timestamp. "Read up to entry seven" is exact; "read at 12:04" has to agree with clocks it has no reason to trust, and the transcript is already sequenced because paging needs it to be.

Identity is the stable authentication subject, the same value the author fields and the audit trail use. A per-team member key stops resolving when somebody leaves the team, and a case outlives a membership - read state keyed on one would become unattributable exactly when the case is still open.

Properties

Identity

public required string Identity { get; init; }

Property Value

string

LastReadSequence

The highest transcript sequence this person has seen.

public required int LastReadSequence { get; init; }

Property Value

int

ReadAt

public required DateTime ReadAt { get; init; }

Property Value

DateTime