-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathschema.js
129 lines (110 loc) · 2.14 KB
/
schema.js
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
'use strict';
const typeDefs = `
type Project {
id: ID!
# The project text.
body: String
# When the projecct was published
date: Date
# Who work on the project
user: User
# Views, etc
Stats: Stat
}
interface User {
id: ID!
# dynamically generated field
anotherId: ID!,
username: String
first_name: String
last_name: String
full_name: String
name: String @deprecated
avatar_url: Url,
projects: [Project]
}
type ProjectPage {
totalCount: Int
edges: [ProjectEdge]
pageInfo: PageInfo
}
type PageInfo {
start: String
end: String
hasNext: Boolean
}
type ProjectEdge {
node: Project
cursor: String
}
# implementation must repeat all of the fields from interface
type Administrator implements User {
id: ID!
# dynamically generated field
anotherId: ID!,
username: String
first_name: String
last_name: String
full_name: String
name: String @deprecated
avatar_url: Url
category: String,
projects: [Project]
}
type Developer implements User {
id: ID!
# dynamically generated field
anotherId: ID!,
username: String
first_name: String
last_name: String
full_name: String
name: String @deprecated
avatar_url: Url
role: Role,
projects: [Project]
}
enum Role {
FRONTEND
BACKEND
}
type Stat {
views: Int
likes: Int
reprojects: Int
responses: Int
}
type Notification {
id: ID
date: Date
type: String
}
type Meta {
count: Int
}
scalar Url
scalar Date
type Query {
ProjectPaging(first:Int, after: String) : ProjectPage
Project(id: ID!): Project
Projects(limit: Int, sortField: String, sortOrder: String): [Project]
ProjectsMeta: Meta
User(role: Role): User,
Users: [User],
Notifications(limit: Int): [Notification]
NotificationsMeta: Meta
}
type Subscription {
projectAdded: Project # subscription operation.
}
type Mutation {
AddProject(body: String, userId: ID!): Project
DeleteProjecct(id: ID!): Project
}
schema {
query: Query
mutation: Mutation
subscription: Subscription
}
`;
module.exports = typeDefs;