membership.graphql 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. "Member's working group roles (current and past)"
  54. roles: [Worker!] @derivedFrom(field: "membership")
  55. # Required for ProposalDiscussionWhitelist->members Many-to-Many relationship
  56. "List of proposal thread whitelists the member is part of"
  57. whitelistedIn: [ProposalDiscussionWhitelist!] @derivedFrom(field: "members")
  58. "Content channels the member owns"
  59. channels: [Channel!] @derivedFrom(field: "ownerMember")
  60. }
  61. type MembershipSystemSnapshot @entity {
  62. "The snapshot block number"
  63. snapshotBlock: Int!
  64. "Initial invitation count of a new member."
  65. defaultInviteCount: Int!
  66. "Current price to buy a membership."
  67. membershipPrice: BigInt!
  68. "Percentage of tokens diverted to invitor."
  69. referralCut: Int!
  70. "The initial, locked, balance credited to controller account of invitee."
  71. invitedInitialBalance: BigInt!
  72. }