11import { User , Profile , Video , Post , Comment , Tariff , TariffOption } from 'test/support/mock-data'
22import inflection from 'inflection' ;
33import * as _ from 'lodash' ;
4+ import { Category } from "./mock-data" ;
45
56
67export const typeDefs = `
@@ -21,6 +22,8 @@ export const typeDefs = `
2122 tariffs(filter: TariffFilter): TariffTypeConnection!
2223 tariffTariffOption(id: ID!): TariffTariffOption!
2324 tariffTariffOptions(filter: TariffTariffOptionFilter): TariffTariffOptionTypeConnection!
25+ category(id: ID!): Category!
26+ categories(filter: CategoryFilter): CategoryTypeConnection!
2427
2528 unpublishedPosts(authorId: ID!): PostTypeConnection
2629 status: Status
@@ -320,6 +323,34 @@ export const typeDefs = `
320323 type TariffTariffOptionTypeConnection {
321324 nodes: [TariffTariffOption!]!
322325 }
326+
327+ type Category {
328+ id: ID
329+ name: String
330+ parentId: ID
331+ parent: Category
332+ }
333+
334+
335+ input CategoryFilter {
336+ id: ID
337+ name: String
338+ parentId: ID
339+ parent: CategoryInput
340+ }
341+
342+
343+ input CategoryInput {
344+ id: ID
345+ name: String
346+ parentId: ID
347+ parent: CategoryInput
348+ }
349+
350+
351+ type CategoryTypeConnection {
352+ nodes: [Category!]!
353+ }
323354` ;
324355
325356
@@ -493,6 +524,56 @@ const tariffOptions = [
493524 }
494525] ;
495526
527+ const categories = [
528+ {
529+ id : 1 ,
530+ name : 'Programming' ,
531+ parentId : 0 ,
532+ } ,
533+
534+ {
535+ id : 2 ,
536+ name : 'Frameworks' ,
537+ parentId : 1 ,
538+ } ,
539+
540+ {
541+ id : 3 ,
542+ name : 'Languages' ,
543+ parentId : 1 ,
544+ } ,
545+
546+ {
547+ id : 4 ,
548+ name : 'Patterns' ,
549+ parentId : 1 ,
550+ } ,
551+
552+ {
553+ id : 5 ,
554+ name : 'Ruby' ,
555+ parentId : 3 ,
556+ } ,
557+
558+ {
559+ id : 6 ,
560+ name : 'JavaScript' ,
561+ parentId : 3 ,
562+ } ,
563+
564+ {
565+ id : 7 ,
566+ name : 'PHP' ,
567+ parentId : 3 ,
568+ } ,
569+
570+ {
571+ id : 8 ,
572+ name : 'RSpec' ,
573+ parentId : 5 ,
574+ } ,
575+ ] ;
576+
496577
497578function addRelations ( model , record , path = [ ] ) {
498579 if ( ! record ) return record ;
@@ -530,6 +611,10 @@ function addRelations(model, record, path = []) {
530611 if ( ! ignoreRelation ( Tariff , path ) ) record . tariffs = findMany ( Tariff , tariffs , ( ) => true , path ) ;
531612 break ;
532613
614+ case Category :
615+ if ( record . parentId ) record . parent = findOne ( Category , categories , record . parentId ) ;
616+ break ;
617+
533618 }
534619
535620 return record ;
@@ -600,6 +685,8 @@ export const resolvers = {
600685 tariffs : ( parent , { filter } ) => findMany ( Tariff , tariffs , filter ) ,
601686 tariffOption : ( parent , { id } ) => findOne ( TariffOption , tariffOptions , id ) ,
602687 tariffOptions : ( parent , { filter } ) => findMany ( TariffOption , tariffOptions , filter ) ,
688+ category : ( parent , { id } ) => findOne ( Category , categories , id ) ,
689+ categories : ( parent , { filter } ) => findMany ( Category , categories , filter ) ,
603690
604691 unpublishedPosts : ( parent , { authorId } ) => findMany ( Post , posts , { authorId } ) ,
605692 status : ( parent , args ) => ( {
0 commit comments