-
Notifications
You must be signed in to change notification settings - Fork 1
/
schema.graphql
129 lines (110 loc) · 2.2 KB
/
schema.graphql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
type User @entity {
# user address
id: ID!
"same as id"
address: String!
canBeHost: Boolean!
#
campaignParticipated: [UserCampaign!]! @derivedFrom(field: "user")
}
type Campaign @entity {
"save as campaign address"
id: ID!
"Campaign address"
address: String!
users: [UserCampaign!]! @derivedFrom(field: "campaign")
uri: String!
"when start"
startTime: BigInt!
"how long a period"
periodLength: BigInt!
"total Time"
totalTime: BigInt!
"How many epochs this campaign has"
epochCount: BigInt!
"When the campaign end"
endTime: BigInt!
"how many join the campaign"
memberCount: BigInt!
targetToken: Token!
requiredAmount: BigInt!
sharedReward: BigInt!
"whether reward distribution is settled"
settled: Boolean!
successCount: BigInt!
}
type UserCampaign @entity {
# user address + campaign contract address
id: ID!
tokenId: BigInt!
user: User!
campaign: Campaign!
# whether is host
isHost: Boolean!
userStatus: UserStatus!
failure: Boolean!
#
pendingReward: BigInt!
pendingUserReward: BigInt!
pendingHostReward: BigInt!
#
userRewardClaimed: Boolean!
#
userRewardClaimedAmount: BigInt
#
hostRewardClaimed: Boolean!
hostRewardClaimedAmount: BigInt
records: [Record!] @derivedFrom(field: "userCampaign")
}
type Token @entity {
# token address
id: ID!
maxAmount: BigInt!
}
type Record @entity {
# user address + campaign address + epoch number
id: ID!
epoch: BigInt!
contentUri: String!
timestamp: BigInt!
userCampaign: UserCampaign!
challenge: Challenge @derivedFrom(field: "record")
}
type Challenge @entity {
"campaign address + challenge id"
id: ID!
" challenge id"
number: BigInt!
campaign: Campaign!
challenger: User!
cheater: User!
"When the voting is end"
deadline: BigInt!
record: Record!
agreeCount: BigInt!
disagreeCount: BigInt!
noVoteCount: BigInt!
result: ChallengeResult!
}
type UserVote @entity {
"user id - challenge id"
id: ID!
user: User!
campaign: Campaign!
challenge: Challenge!
choice: Boolean
}
enum ChallengeResult {
Voting
VoteNotEnough
Approved
Failed
}
enum UserStatus {
NotParticipate
Signed
Admitted
Refused
Success
Failure
}