All files / server/gql/articles/outputs Article.ts

0% Statements 0/12
100% Branches 0/0
100% Functions 0/0
0% Lines 0/10

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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61                                                                                                                         
import {
  GraphQLFloat,
  GraphQLID,
  GraphQLInt,
  GraphQLList,
  GraphQLObjectType,
  GraphQLString,
} from 'graphql';
import { GraphQLDateTime } from 'graphql-iso-date';
import { IArticle } from '../../../../shared';
import { getComments } from '../../../model/comment';
import getAverageScore from '../../../scores/getAverageScore';
import { GraphQLCategory } from '../../categories';
import { GraphQLComment } from '../../comments';
import { GraphQLUser } from '../../user';
 
export default new GraphQLObjectType({
  name: 'Article',
  fields: {
    _id: {
      type: GraphQLID,
    },
    title: {
      type: GraphQLString,
    },
    slug: {
      type: GraphQLString,
    },
    category: {
      type: GraphQLCategory,
    },
    image: {
      type: GraphQLString,
    },
    text: {
      type: GraphQLString,
    },
    createdDateTime: {
      type: GraphQLDateTime,
    },
    type: {
      type: GraphQLInt,
    },
    status: {
      type: GraphQLInt,
    },
    user: {
      type: GraphQLUser,
    },
    comments: {
      type: new GraphQLList(GraphQLComment),
      resolve: async ({ _id }: IArticle) => getComments(_id),
    },
    averageScore: {
      description: 'Average of user score',
      type: GraphQLFloat,
      resolve: async ({ _id }: IArticle) => getAverageScore(_id),
    },
  },
});