-
Notifications
You must be signed in to change notification settings - Fork 6
/
schema.graphql
191 lines (143 loc) · 3.87 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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# Comments/messages between voters for proposals
type Comment {
# Message/body of the comment.
# This is `null` if this message is deleted.
body: String
# Date when the comment was published
createdAt: ISO8601DateTime!
# Comment ID
id: ID!
# A flag to indicate if the current user liked this comment
liked: Boolean!
# Number of user who liked this comment
likes: Int!
# Replies/comments about this comment
replies(
# Returns the elements in the list that come after the specified cursor.
after: String
# Returns the elements in the list that come before the specified cursor.
before: String
# Returns the first _n_ elements from the list.
first: Int
# Returns the last _n_ elements from the list.
last: Int
): CommentConnection!
# Stage/phase the comment was published
stage: Stage!
# Poster of this comment
user: User!
}
# The connection type for Comment.
type CommentConnection {
# A list of edges.
edges: [CommentEdge]
# A list of nodes.
nodes: [Comment]
# Information to aid in pagination.
pageInfo: PageInfo!
}
# An edge in a connection.
type CommentEdge {
# A cursor for use in pagination.
cursor: String!
# The item at the end of the edge.
node: Comment
}
# An ISO 8601-encoded datetime
scalar ISO8601DateTime
type Mutation {
# An example field added by the generator
testField: String!
}
# Information about pagination in a connection.
type PageInfo {
# When paginating forwards, the cursor to continue.
endCursor: String
# When paginating forwards, are there more items?
hasNextPage: Boolean!
# When paginating backwards, are there more items?
hasPreviousPage: Boolean!
# When paginating backwards, the cursor to continue.
startCursor: String
}
# DAO proposals/projects to be voted and funded for
type Proposal {
# Date when the proposal was published
createdAt: ISO8601DateTime!
# A flag to indicate if the current user liked this proposal
liked: Boolean!
# Number of user who liked this proposal
likes: Int!
# Eth contract address of the proposal
proposalId: String!
# Stage/phase the proposal is in
stage: Stage!
# Publisher of this proposal
user: User!
}
type Query {
# Proposals
searchCommentThreads(
# Returns the elements in the list that come after the specified cursor.
after: String
# Returns the elements in the list that come before the specified cursor.
before: String
# Search comment replies by its id.
#
# This is required or proposal id.
commentId: String
# Returns the first _n_ elements from the list.
first: Int
# Returns the last _n_ elements from the list.
last: Int
# Search proposal threads by proposal id address.
#
# This is required or the comment id.
# Also this takes precedence if both exists.
proposalId: String
# Sorting options for the threads
sortBy: ThreadSortBy = LATEST
# Filter comments by stage/phase.
#
# If not specified, it defaults to the current stage.
stage: Stage
): CommentConnection!
# Search for proposals/projects
searchProposals(
# Filter proposals if it is liked or not by the current user
liked: Boolean
# Filter proposals by a list of proposal id addresses
proposalIds: [String!]
# Sorting options for the proposals
sortBy: SortBy = DESC
# Filter proposals by its stage/phase
stage: Stage
): [Proposal!]!
}
enum SortBy {
# Sort in ascending creation time
ASC
# Sort in descending creation time
DESC
}
enum Stage {
# Closed, finished or rejected
ARCHIVED
# To be voted on
DRAFT
# To be endorsed by a moderator
IDEA
}
enum ThreadSortBy {
# Sort in descending creation time
LATEST
# Sort in ascending creation time
OLDEST
}
# DAO users who publish proposals and vote for them
type User {
# Eth address of the user
address: String!
# User ID
id: ID!
}