Пример #1
0
 public Query(ITrilogyHeroes trilogyHeroes, IDroidRepository droidRepository,
              IHumanRepository humanRepository)
 {
     _trilogyHeroes   = trilogyHeroes;
     _droidRepository = droidRepository;
     _humanRepository = humanRepository;
 }
        public StarWarsQuery(ITrilogyHeroes trilogyHeroes, Core.Data.IDroidRepository droidRepository, Core.Data.IHumanRepository humanRepository, IMapper mapper)
        {
            Name = "Query";

            Field <CharacterInterface>(
                "hero",
                arguments: new QueryArguments(
                    new QueryArgument <EpisodeEnum> {
                Name = "episode", Description = "If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode."
            }
                    ),
                resolve: context =>
            {
                var episode   = context.GetArgument <Episodes?>("episode");
                var character = trilogyHeroes.GetHero((int?)episode).Result;
                var hero      = mapper.Map <Character>(character);
                return(hero);
            }
                );

            Field <HumanType>(
                "human",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <StringGraphType> > {
                Name = "id", Description = "id of the human"
            }
                    ),
                resolve: context =>
            {
                var id    = context.GetArgument <int>("id");
                var human = humanRepository.Get(id).Result;
                if (human != null)
                {
                    Console.Out.WriteLine("Human found: " + human.Id);
                }
                var mapped = mapper.Map <Human>(human);
                return(mapped);
            }
                );
            Field <DroidType>(
                "droid",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <StringGraphType> > {
                Name = "id", Description = "id of the droid"
            }
                    ),
                resolve: context =>
            {
                var id     = context.GetArgument <int>("id");
                var droid  = droidRepository.Get(id).Result;
                var mapped = mapper.Map <Droid>(droid);
                return(mapped);
            }
                );
        }
Пример #3
0
        public Mutation(ITrilogyHeroes trilogyHeroes, IDroidRepository droidRepository,
                        IHumanRepository humanRepository)
        {
            _trilogyHeroes   = trilogyHeroes;
            _droidRepository = droidRepository;
            _humanRepository = humanRepository;

            Name = "Mutation";

            Field <DroidType>(
                Name = "addDroid",
                arguments: new QueryArguments(
                    new QueryArgument <DroidTypeInput> {
                Name = "droid", DefaultValue = null
            }),
                resolve: AddDroid
                );
        }
Пример #4
0
        public Query(ITrilogyHeroes trilogyHeroes, IDroidRepository droidRepository,
                     IHumanRepository humanRepository)
        {
            _trilogyHeroes   = trilogyHeroes;
            _droidRepository = droidRepository;
            _humanRepository = humanRepository;

            Name = "Query";

            Field <CharacterInterface>(
                "hero",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <EpisodeEnum> >
            {
                Name        = "episode",
                Description =
                    "If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode."
            }
                    ),
                resolve: GetHero
                );
            Field <HumanType>(
                "human",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "id", Description = "id of the human"
            }
                    ),
                resolve: GetHuman
                );

            Field <DroidType>(
                "droid",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "id", Description = "id of the droid"
            }
                    ), resolve: GetDroid);


            Field <ListGraphType <CharacterInterface> >("heroes", resolve: GetHeroes);
            Field <ListGraphType <HumanType> >("humans", resolve: GetHumans);
            Field <ListGraphType <DroidType> >("droids", resolve: GetDroids);
        }
Пример #5
0
        public StarWarsQuery(ITrilogyHeroes trilogyHeroes, IDroidRepository droidRepository, IHumanRepository humanRepository, IMapper mapper)
        {
            Name = "Query";

            Field <CharacterInterface>(
                "hero",
                arguments: new QueryArguments(
                    new QueryArgument <EpisodeEnum> {
                Name = "episode", Description = "If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode."
            }
                    ),
                resolve: context =>
            {
                var episode   = context.GetArgument <Episodes?>("episode");
                var character = trilogyHeroes.GetHero((int?)episode).Result;
                var hero      = mapper.Map <Character>(character);
                return(hero);
            }
                );

            Field <HumanType>(
                "human",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <StringGraphType> > {
                Name = "id", Description = "id of the human"
            }
                    ),
                resolve: context =>
            {
                var id     = context.GetArgument <int>("id");
                var human  = humanRepository.Get(id, include: "HomePlanet").Result;
                var mapped = mapper.Map <Human>(human);
                return(mapped);
            }
                );

            Field <ListGraphType <HumanType> >(
                "humans",
                resolve: context =>
            {
                var humans = humanRepository.GetAll(include: "HomePlanet").Result;
                var mapped = mapper.Map <List <Human> >(humans);
                return(mapped);
            }
                );

            Field <DroidType>(
                "droid",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <StringGraphType> > {
                Name = "id", Description = "id of the droid"
            }
                    ),
                resolve: context =>
            {
                var id     = context.GetArgument <int>("id");
                var droid  = droidRepository.Get(id).Result;
                var mapped = mapper.Map <Droid>(droid);
                return(mapped);
            }
                );
        }