membership.graphql 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. type MemberMetadata @entity {
  2. "Member's name"
  3. name: String
  4. "Avatar data object"
  5. avatar: DataObject
  6. "Short text chosen by member to share information about themselves"
  7. about: String
  8. }
  9. type MembershipEntryPaid @variant {
  10. "The event the membership was bought in"
  11. # Must be optional because of member.entry <=> membershipBoughtEvent.newMember cross relationship
  12. membershipBoughtEvent: MembershipBoughtEvent
  13. }
  14. type MembershipEntryInvited @variant {
  15. "The event the member was invited in"
  16. # Must be optional because of member.entry <=> memberInvitedEvent.newMember cross relationship
  17. memberInvitedEvent: MemberInvitedEvent
  18. }
  19. type MembershipEntryGenesis @variant {
  20. phantom: Int
  21. }
  22. union MembershipEntryMethod = MembershipEntryPaid | MembershipEntryInvited | MembershipEntryGenesis
  23. "Stored information about a registered user"
  24. type Membership @entity {
  25. "MemberId: runtime identifier for a user"
  26. id: ID!
  27. "The unique handle chosen by member"
  28. handle: String! @unique @fulltext(query: "membersByHandle")
  29. "Member's metadata"
  30. metadata: MemberMetadata!
  31. "Member's controller account id"
  32. controllerAccount: String!
  33. "Member's root account id"
  34. rootAccount: String!
  35. "How the member was registered"
  36. entry: MembershipEntryMethod!
  37. "Whether member has been verified by membership working group."
  38. isVerified: Boolean!
  39. "Staking accounts bounded to membership."
  40. boundAccounts: [String!]
  41. "Current count of invites left to send."
  42. inviteCount: Int!
  43. "All members invited by this member."
  44. invitees: [Membership!] @derivedFrom(field: "invitedBy")
  45. "A member that invited this member (if any)"
  46. invitedBy: Membership
  47. "All members referred by this member"
  48. referredMembers: [Membership!] @derivedFrom(field: "referredBy")
  49. "A member that referred this member (if any)"
  50. referredBy: Membership
  51. "Whether member is founding member."
  52. isFoundingMember: Boolean!
  53. "Whether member is elected in the current council."
  54. isCouncilMember: Boolean!
  55. "Member's working group roles (current and past)"
  56. roles: [Worker!] @derivedFrom(field: "membership")
  57. # Required for ProposalDiscussionWhitelist->members Many-to-Many relationship
  58. "List of proposal thread whitelists the member is part of"
  59. whitelistedIn: [ProposalDiscussionWhitelist!] @derivedFrom(field: "members")
  60. "Content channels the member owns"
  61. channels: [Channel!] @derivedFrom(field: "ownerMember")
  62. # Council & Referendum relations
  63. "Council reward payment made received by the member."
  64. budgetPayments: [BudgetPayment!] @derivedFrom(field: "member")
  65. "Elected councils' memberships of the member."
  66. councilMembers: [CouncilMember!] @derivedFrom(field: "member")
  67. "Referendum results for the member."
  68. referendumStageRevealingOptionResults: [ReferendumStageRevealingOptionResult!] @derivedFrom(field: "optionId")
  69. "Votes recieved in referendums by this member."
  70. votesRecieved: [CastVote!] @derivedFrom(field: "voteFor")
  71. "Events announcing council being elected."
  72. electedCouncilEvents: [NewCouncilElectedEvent!] @derivedFrom(field: "electedMembers")
  73. }
  74. type MembershipSystemSnapshot @entity {
  75. "The snapshot block number"
  76. snapshotBlock: Int!
  77. "Initial invitation count of a new member."
  78. defaultInviteCount: Int!
  79. "Current price to buy a membership."
  80. membershipPrice: BigInt!
  81. "Percentage of tokens diverted to invitor."
  82. referralCut: Int!
  83. "The initial, locked, balance credited to controller account of invitee."
  84. invitedInitialBalance: BigInt!
  85. }