type User {
  id: ID!
  name: String!
  email: String!
  password: String!
  createdAt: String!
  updatedAt: String!
}

type AuthPayload {
  token: String!
  user: User!
}

input SignUpInput {
  name: String!
  email: String!
  password: String!
}

input SignInInput {
  email: String!
  password: String!
}

type Query {
  me: User! @authenticated
}

type Mutation {
  signUp(input: SignUpInput!): AuthPayload!
  signIn(input: SignInInput!): AuthPayload!
  signOut: Boolean! @authenticated
}

directive @authenticated on FIELD_DEFINITION
