
/* global wiki */

const gql = require('graphql')

module.exports = {
  Query: {
    rights(obj, args, context, info) {
      return wiki.db.Right.findAll({ where: args })
    }
  },
  Mutation: {
    addRightToGroup(obj, args) {
      return wiki.db.Group.findById(args.groupId).then(grp => {
        if (!grp) {
          throw new gql.GraphQLError('Invalid Group ID')
        }
        return wiki.db.Right.create({
          path: args.path,
          role: args.role,
          exact: args.exact,
          allow: args.allow,
          group: grp
        })
      })
    },
    removeRightFromGroup(obj, args) {
      return wiki.db.Right.destroy({
        where: {
          id: args.rightId
        },
        limit: 1
      })
    },
    modifyRight(obj, args) {
      return wiki.db.Right.update({
        path: args.path,
        role: args.role,
        exact: args.exact,
        allow: args.allow
      }, {
        where: {
          id: args.id
        }
      })
    }
  },
  Right: {
    group(rt) {
      return rt.getGroup()
    }
  }
}
