task_receipts/server/src/graphql/schema.ts

105 lines
2.1 KiB
TypeScript

import { gql } from 'graphql-tag';
export const typeDefs = gql`
type Group {
id: ID!
name: String!
parentId: ID
tasks: [Task!]!
createdAt: String!
updatedAt: String!
}
type Task {
id: ID!
name: String!
groupId: ID!
group: Group!
steps: [Step!]!
printCount: Int!
lastPrintedAt: String
createdAt: String!
updatedAt: String!
notes: [Note!]!
printHistory: [PrintHistory!]!
}
type Step {
id: ID!
name: String!
instructions: String!
taskId: ID!
task: Task!
order: Int!
images: [Image!]!
printCount: Int!
lastPrintedAt: String
createdAt: String!
updatedAt: String!
notes: [Note!]!
printHistory: [PrintHistory!]!
}
type Image {
id: ID!
stepId: ID!
originalPath: String!
bwPath: String!
order: Int!
createdAt: String!
updatedAt: String!
}
type User {
id: ID!
name: String!
createdAt: String!
updatedAt: String!
}
type Note {
id: ID!
content: String!
taskId: ID
stepId: ID
createdBy: User!
createdAt: String!
updatedAt: String!
}
type PrintHistory {
id: ID!
user: User!
task: Task
step: Step
printedAt: String!
createdAt: String!
updatedAt: String!
}
type Query {
groups: [Group!]!
group(id: ID!): Group
tasks(groupId: ID!): [Task!]!
task(id: ID!): Task
steps(taskId: ID!): [Step!]!
step(id: ID!): Step
recentTasks: [Task!]!
frequentTasks: [Task!]!
users: [User!]!
user(id: ID!): User
notes(taskId: ID, stepId: ID): [Note!]!
printHistory(taskId: ID, stepId: ID): [PrintHistory!]!
}
type Mutation {
createGroup(name: String!, parentId: ID): Group!
createTask(name: String!, groupId: ID!): Task!
createStep(name: String!, instructions: String!, taskId: ID!, order: Int!): Step!
createImage(stepId: ID!, originalPath: String!, bwPath: String!, order: Int!): Image!
createUser(name: String!): User!
createNote(content: String!, taskId: ID, stepId: ID, createdBy: ID!): Note!
printTask(id: ID!, userId: ID!): Task!
printStep(id: ID!, userId: ID!): Step!
}
`;