All files / server/gql/categories/mutations SortCategories.ts

0% Statements 0/17
100% Branches 0/0
100% Functions 0/0
0% Lines 0/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35                                                                     
import { GraphQLInt, GraphQLList, GraphQLNonNull } from 'graphql';
import { arrayMove } from 'react-sortable-hoc';
import { ICategory } from '../../../../shared';
import { sortCategoriesPermissions } from '../../../../shared/permissions';
import { isAuthorized } from '../../../api/cognito';
import { categoryModel, getCategories } from '../../../model/category';
import GraphQLCategory from '../outputs/Category';
 
export default {
  type: new GraphQLList(GraphQLCategory),
  args: {
    oldIndex: {
      type: new GraphQLNonNull(GraphQLInt),
    },
    newIndex: {
      type: new GraphQLNonNull(GraphQLInt),
    },
  },
  resolve: async (
    parent: any,
    { oldIndex, newIndex }: any,
    request: Request,
  ): Promise<ICategory[]> => {
    isAuthorized(request, sortCategoriesPermissions);
    const categories = await getCategories();
    const data = arrayMove(categories, oldIndex, newIndex);
 
    data.forEach(async ({ _id }, i) => {
      await categoryModel.updateOne({ _id }, { index: i });
    });
 
    return getCategories();
  },
};