-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproject.graphcool
153 lines (139 loc) · 3.46 KB
/
project.graphcool
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
# project: tripby
# version: 69
type Article implements Node {
author: User @relation(name: "ArticleAuthor")
categories: [Category!]! @relation(name: "ArticleOnCategory")
content: String!
createdAt: DateTime!
downvotes: Int! @defaultValue(value: 0)
id: ID! @isUnique
title: String!
updatedAt: DateTime!
upvotes: Int! @defaultValue(value: 0)
}
type Category implements Node {
articles: [Article!]! @relation(name: "ArticleOnCategory")
createdAt: DateTime!
drugs: [Drug!]! @relation(name: "DrugOnCategory")
id: ID! @isUnique
title: String!
updatedAt: DateTime!
}
type Combination implements Node {
createdAt: DateTime!
description: String
drugs: [Drug!]! @relation(name: "DrugCombinations")
id: ID! @isUnique
synergy: Boolean
updatedAt: DateTime!
}
type Drug implements Node {
alerts: [String!]!
aliases: [String!]
analogues: [Drug!]! @relation(name: "DrugAnalogues")
class: Category @relation(name: "DrugOnCategory")
combinations: Combination @relation(name: "DrugCombinations")
createdAt: DateTime!
crossTolerances: [Drug!]! @relation(name: "DrugOnDrug")
effects: [Effect!]! @relation(name: "DrugEffects")
effectsExcerpt: String @isUnique
experiences: [Experience!]! @relation(name: "ExperienceDrugs")
health: String @isUnique
healthExcerpt: String @isUnique
id: ID! @isUnique
lawExcerpt: String @isUnique
molecules: [File!]! @relation(name: "DrugOnFile")
name: String! @isUnique
rating: [Rating!]!
routes: [Route!]! @relation(name: "DrugOnRoute")
updatedAt: DateTime!
}
type Duration implements Node {
createdAt: DateTime!
id: ID! @isUnique
max: Float
min: Float
route: Route @relation(name: "RouteOnDuration")
timeframe: Timeframe!
updatedAt: DateTime!
}
type Effect implements Node {
createdAt: DateTime!
description: String! @isUnique
drugs: [Drug!]! @relation(name: "DrugEffects")
id: ID! @isUnique
image: File @relation(name: "EffectOnFile")
title: String! @isUnique
updatedAt: DateTime!
}
type Experience implements Node {
author: User @relation(name: "ExperienceAuthor")
createdAt: DateTime!
downvotes: Int! @defaultValue(value: 0)
drugs: [Drug!]! @relation(name: "ExperienceDrugs")
id: ID! @isUnique
story: String!
tags: [Tag!]! @relation(name: "ExperienceTags")
title: String!
updatedAt: DateTime!
upvotes: [Int!]! @defaultValue(value: "[0]")
}
type File implements Node {
contentType: String!
createdAt: DateTime!
drug: Drug @relation(name: "DrugOnFile")
effect: Effect @relation(name: "EffectOnFile")
id: ID! @isUnique
name: String!
secret: String! @isUnique
size: Int!
updatedAt: DateTime!
url: String! @isUnique
}
enum Rating {
R1
R2
R3
R4
R5
}
type Route implements Node {
createdAt: DateTime!
drug: Drug @relation(name: "DrugOnRoute")
durations: [Duration!]! @relation(name: "RouteOnDuration")
id: ID! @isUnique
name: Routes!
updatedAt: DateTime!
}
enum Routes {
Oral
Sublingual
Recetal
Pulmonary
Transdermal
Intravenous
Subcutaneous
Intramuscular
}
type Tag implements Node {
createdAt: DateTime!
experiences: [Experience!]! @relation(name: "ExperienceTags")
id: ID! @isUnique
tag: String! @isUnique
updatedAt: DateTime!
}
enum Timeframe {
ComeUp
Onset
Peak
ComeDown
Total
Hangover
}
type User implements Node {
articles: [Article!]! @relation(name: "ArticleAuthor")
createdAt: DateTime!
experiences: [Experience!]! @relation(name: "ExperienceAuthor")
id: ID! @isUnique
updatedAt: DateTime!
}