-
Notifications
You must be signed in to change notification settings - Fork 1
/
typeDefs.js
135 lines (117 loc) · 3.13 KB
/
typeDefs.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
130
131
132
133
134
135
/**
* This is the typeDefs file for the GraphQL endpoint.
*
* To add a new resolver, add it to typeDefs below, and define it
* in `resolvers.js`.
* To update MongoDB schema, update the /models directory.
*/
import { gql } from 'apollo-server-express';
const typeDefs = gql`
type User {
firstname: String!
lastname: String!
email: String!
lastVisited: ID!
}
type Category {
id: ID!
name: String!
notes: [ID]!
databaseId: ID!
}
type Database {
id: ID!
title: String!
currentView: String!
categories: [ID]!
notes: [String]!
}
type PopulatedDatabase {
id: ID!
title: String!
currentView: String!
categories: [Category]!
notes: [Note]!
}
type Note {
id: ID!
userId: ID!
databaseId: ID!
categoryId: ID!
title: String!
blocks: [NoteBlock]!
creationDate: Date!
latestUpdate: Date!
}
type NoteBlock {
id: String!
html: String!
tag: String!
}
type AuthPayload {
user: User!
}
type SharedLink {
noteId: ID!
hash: String!
}
type SharedLinkNote {
id: ID!
user: User
title: String!
blocks: [NoteBlock]!
latestUpdate: Date!
}
input RegisterInput {
firstname: String!
lastname: String!
email: String!
password: String!
}
input NoteBlockInput {
id: String!
html: String!
tag: String!
}
input UpdateNoteBlocksInput {
blocks: [NoteBlockInput]
}
scalar Date
type Query {
getNote(noteId: ID!): Note
getDatabase(databaseId: ID!): PopulatedDatabase
getAllUserDatabases: [Database]
currentUser: User
getNoteBySharedLinkHash(hash: String!): SharedLinkNote
}
type Mutation {
register(input: RegisterInput): AuthPayload
login(email: String!, password: String!): AuthPayload
logout: Boolean
createDatabase(title: String!, index: Int!): Database
deleteDatabase(databaseId: ID!): Database
createDatabaseCategoryForCurrentNote(
databaseId: ID!
categoryName: String!
noteId: ID!
): Database
createDatabaseCategory(databaseId: ID!, categoryName: String!, index: Int!): Category
deleteDatabaseCategory(databaseId: ID!, categoryId: ID!): Database
updateDatabaseCategories(databaseId: ID!, categories: [ID]!): Database
updateCategoryName(categoryId: ID!, name: String!): Category
updateDatabaseTitle(databaseId: ID!, title: String!): Database
updateDatabaseView(databaseId: ID!, view: String!): Database
updateDatabaseNotes(databaseId: ID!, notes: [ID]!): Database
createNote(databaseId: ID!, categoryId: ID!, title: String!, index: Int!): Note
deleteNote(noteId: ID!): Note
updateNoteTitle(noteId: ID!, title: String!): Note
updateNoteCategory(noteId: ID!, categoryId: ID!, index: Int!): PopulatedDatabase
updateNoteBlocks(noteId: ID!, input: UpdateNoteBlocksInput): Note
updateDatabases(databases: [ID]!): User
updateLastVisited(lastVisited: ID!): User
generateSharedLink(noteId: ID!): SharedLink
}
`;
// TODO: Add an enum for Database currentView
// TODO: See resolvers.js for a list of unimplemented queries and mutations
export default typeDefs;