Vixen
caa30e12
csharp
public record class GuildRecord

One guild's durable shape.

Read the guide page for this →

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 Charter

    Which charter it was founded under.

  • public string Name

    What it is called.

  • public ImmutableArray<GuildMember> Members

    Who is in it, in join order.

  • public ImmutableDictionary<int, string> RankNames

    What a leader renamed a rank to, by rank index. Absent means the charter's own.

  • public DateTimeOffset Founded

    When.

  • public uint Revision

    How many times it has changed.

  • public static GuildRecord None

    A guild that does not exist yet.

  • public bool Exists

    Whether 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