membership.graphql 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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: "option")
  69. "Votes recieved in referendums by this member."
  70. votesRecieved: [CastVote!] @derivedFrom(field: "voteFor")
  71. }
  72. type MembershipSystemSnapshot @entity {
  73. "The snapshot block number"
  74. snapshotBlock: Int!
  75. "Initial invitation count of a new member."
  76. defaultInviteCount: Int!
  77. "Current price to buy a membership."
  78. membershipPrice: BigInt!
  79. "Percentage of tokens diverted to invitor."
  80. referralCut: Int!
  81. "The initial, locked, balance credited to controller account of invitee."
  82. invitedInitialBalance: BigInt!
  83. }