import { GqlInputError } from '@/lib/error'

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 GqlInputError('must have 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 } })
  }
}