import { UserInputError } from 'apollo-server-micro'

export default {
  Query: {
    messages: async (parent, args, { models }) =>
      await models.message.findMany(),
    message: async (parent, { id }, { models }) =>
      await models.message.findUnique({ where: { id } })
  },

  Mutation: {
    createMessage: async (parent, { text }, { me, models }) => {
      if (!text) {
        throw new UserInputError('Must have text', { argumentName: 'text' })
      }

      return await models.message.create({
        data: { text, userId: me.id }
      })
    },
    deleteMessage: async (parent, { id }, { models }) =>
      await models.message.delete({ where: { id } })
  },

  Message: {
    user: async (message, args, { models }) =>
      await models.user.findUnique({ where: { id: message.userId } })
  }
}