public record class GuildRecordOne guild's durable shape.
Remarks
⚠ The charter's address, never its ranks. A charter is content — its rank list, its permissions and its member cap are a .vxdef — so a guild that stored them would be a guild that kept last patch's rules after the patch. What is genuinely per-guild is the names a leader typed over them, which is RankNames.
⚠ The bank is a ledger account and not a field. Doc 27 § Persistence's invariant is that every movement of value is a row that sums to zero, and a guild bank held as a number here would be the one balance in the world outside it. It is LedgerAccount.Of("guild/" + id), so a deposit is an ordinary two-legged transfer and the conservation oracle covers it for free.
Fields and properties (8)
public string CharterWhich charter it was founded under.
public string NameWhat it is called.
public ImmutableArray<GuildMember> MembersWho is in it, in join order.
public ImmutableDictionary<int, string> RankNamesWhat a leader renamed a rank to, by rank index. Absent means the charter's own.
public DateTimeOffset FoundedWhen.
public uint RevisionHow many times it has changed.
public static GuildRecord NoneA guild that does not exist yet.
public bool ExistsWhether it has been founded.
Methods (3)
public GuildRecord(string Charter, string Name, ImmutableArray<GuildMember> Members, ImmutableDictionary<int, string> RankNames, DateTimeOffset Founded, uint Revision)One guild's durable shape.
public bool Equals(GuildRecord? other)Whether two records say the same thing.
public override int GetHashCode()Serves as the default hash function.
Used by (5)
- ClusterSerializationTestsVixen.Live.Cluster.Tests
- GuildGrainVixen.Live.Orchestrator
- GuildStateVixen.Live.Orchestrator
- GuildStateTestsVixen.Live.Orchestrator.Tests
- IGuildGrainVixen.Live.Cluster