140 lines
2.5 KiB
GraphQL
140 lines
2.5 KiB
GraphQL
directive @bb_primaryKey on FIELD_DEFINITION
|
|
directive @bb_resolver on FIELD_DEFINITION
|
|
directive @bb_owned on OBJECT
|
|
directive @bb_user on OBJECT
|
|
|
|
"""
|
|
List of tasks or todo items.
|
|
"""
|
|
type List @bb_owned {
|
|
id: ID!
|
|
title: String!
|
|
tasks: [Task]
|
|
user: User!
|
|
}
|
|
|
|
input ListInput {
|
|
id: ID!
|
|
}
|
|
|
|
"""
|
|
Task or todo item.
|
|
"""
|
|
type Task @bb_owned {
|
|
id: ID!
|
|
title: String!
|
|
description: String,
|
|
completed: Boolean!
|
|
user: User!
|
|
list: List!
|
|
}
|
|
|
|
"""
|
|
User type; owner of lists and tasks
|
|
"""
|
|
type User @bb_user {
|
|
username: String! @bb_primaryKey
|
|
name: String
|
|
tasks: [Task]
|
|
lists: [List]
|
|
}
|
|
|
|
input UserInput {
|
|
username: String!
|
|
name: String
|
|
}
|
|
|
|
type Query {
|
|
|
|
"""
|
|
Get a user, this will be used to get the current user as well as the user's lists and tasks.
|
|
"""
|
|
getUser(
|
|
username: String!
|
|
): User
|
|
@bb_resolver(
|
|
_type: SELECT,
|
|
_object: User,
|
|
_filter: { username: { _eq: "$username" } })
|
|
|
|
}
|
|
|
|
type Mutation {
|
|
|
|
createUser(
|
|
username: String!,
|
|
name: String!
|
|
): User
|
|
@bb_resolver(
|
|
_type: INSERT,
|
|
_object: User,
|
|
_fields: { username: "$username", name: "$name" })
|
|
|
|
createList(
|
|
title: String!
|
|
user: UserInput!
|
|
): List
|
|
@bb_resolver(
|
|
_type: INSERT,
|
|
_object: List,
|
|
_fields: {
|
|
title: "$title",
|
|
user: { username: "$user.$username" }
|
|
})
|
|
|
|
updateList(
|
|
id: ID!,
|
|
title: String!
|
|
): List
|
|
@bb_resolver(
|
|
_type: UPDATE,
|
|
_object: List,
|
|
_filter: { id: { _eq: "$id" } },
|
|
_fields: { title: "$title" })
|
|
|
|
deleteList(id: ID!): List
|
|
@bb_resolver(_type: DELETE, _object: List, _filter: { id: { _eq: "$id" } })
|
|
|
|
createTask(
|
|
title: String!,
|
|
description: String,
|
|
completed: Boolean!,
|
|
list: ListInput!
|
|
user: UserInput!
|
|
): Task
|
|
@bb_resolver(
|
|
_type: INSERT,
|
|
_object: Task,
|
|
_fields: {
|
|
title: "$title",
|
|
description: "$description",
|
|
completed: "$completed",
|
|
list: { id: "$list.$id" },
|
|
user: { username: "$user.$username" } })
|
|
|
|
updateTask(
|
|
id: ID!,
|
|
title: String,
|
|
description: String,
|
|
completed: Boolean,
|
|
list: ListInput
|
|
): Task
|
|
@bb_resolver(
|
|
_type: UPDATE,
|
|
_object: Task,
|
|
_filter: { id: { _eq: "$id" } },
|
|
_fields: {
|
|
title: "$title",
|
|
description: "$description",
|
|
completed: "$completed",
|
|
list: { id: "$list.$id" }
|
|
})
|
|
|
|
deleteTask(id: ID!): Task
|
|
@bb_resolver(
|
|
_type: DELETE,
|
|
_object: Task,
|
|
_filter: { id: { _eq: "$id" }})
|
|
|
|
}
|