forked from subsquid-labs/squid-substrate-template
/
schema.graphql
128 lines (118 loc) · 3.07 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
# Copied Governance data from https://raw.githubusercontent.com/litentry/squid/main/prawns/governance/schema.graphql
enum SubstrateNetwork {
polkadot,
kusama,
phala,
moonbeam,
calamari
}
enum ProposalState {
proposed,
voting,
approved,
enacted,
disapproved,
closed
}
type SubstrateTechcommProposal @entity {
"network:proposal_index"
id: ID!
proposal: String! @index #proposal hash
proposer: SubstrateGovernanceAccount!
introducedAtBlock: BigInt!
date: DateTime!
state: ProposalState!
network: SubstrateNetwork!
ayes: Int!
nays: Int!
voteCount: Int!
voteThreshold: Int!
votes: [SubstrateTechcommVote]! @derivedFrom(field: "proposal")
# totalProposalSeconds: Int!
}
type SubstrateGovernanceAccount @entity {
"address"
id: ID!
"hex address"
rootAccount: String! @index
network: SubstrateNetwork!
totalProposalSeconds: Int!
"includes both normal proposal votes and votes as a council member from council.vote()"
totalProposalVotes: Int!
totalElectionVotes: Int!
councilVotes: [SubstrateCouncilVote]! @derivedFrom(field: "account")
techcommVotes: [SubstrateTechcommVote]! @derivedFrom(field: "account")
proposalsIntroduced: [SubstrateTechcommProposal]! @derivedFrom(field: "proposer")
proposalVotes: [SubstrateProposalVote]! @derivedFrom(field: "account")
proposalSeconds: [SubstrateProposalSecond]! @derivedFrom(field: "account")
electionVotes: [SubstrateElectionVote]! @derivedFrom(field: "account")
}
type SubstrateElectionVote @entity {
"network:block:index"
id: ID!
network: SubstrateNetwork!
account: SubstrateGovernanceAccount!
rootAccount: String! @index
blockNumber: BigInt!
date: DateTime!
candidates: [String!]!
amount: BigInt!
}
type SubstrateTechcommVote @entity {
"network:block:index"
id: ID!
network: SubstrateNetwork!
account: SubstrateGovernanceAccount!
rootAccount: String! @index
blockNumber: BigInt!
date: DateTime!
proposal: SubstrateTechcommProposal!
approve: Boolean!
}
type SubstrateCouncilVote @entity {
"network:block:index"
id: ID!
network: SubstrateNetwork!
account: SubstrateGovernanceAccount!
rootAccount: String! @index
blockNumber: BigInt!
date: DateTime!
proposalIndex: Int! @index
proposal: String!
approve: Boolean!
}
type SubstrateProposalVote @entity {
"network:block:index"
id: ID!
network: SubstrateNetwork!
account: SubstrateGovernanceAccount!
rootAccount: String! @index
blockNumber: BigInt!
date: DateTime!
refIndex: Int! @index
"not sure how to interpret this properly yet so using JSON.stringify() and saving raw"
vote: String!
}
type SubstrateProposalSecond @entity {
"network:block:index"
id: ID!
network: SubstrateNetwork!
account: SubstrateGovernanceAccount!
rootAccount: String! @index
blockNumber: BigInt!
date: DateTime!
proposalIndex: Int! @index
upperBound: Int
}
type Account @entity {
"Account address"
id: ID!
balance: BigInt!
historicalBalances: [HistoricalBalance!] @derivedFrom(field: "account")
}
type HistoricalBalance @entity {
id: ID!
account: Account!
balance: BigInt!
date: DateTime!
}