public PessoaMutation(MeetupGraphQLNetContext context)
        {
            Name = nameof(PessoaMutation);

            Field <PessoaType>(
                "create",
                description: "Criar um novo registro de pessoa",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <PessoaInputType> > {
                Name = "pessoa"
            }
                    ),
                resolve: ctx =>
            {
                var pessoa = ctx.GetArgument <Pessoa>("pessoa");

                context.Pessoas.Add(pessoa);
                context.SaveChanges();

                return(pessoa);
            });

            Field <PessoaType>(
                "update",
                description: "Atualizar um registro de pessoa",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <PessoaInputType> > {
                Name = "pessoa"
            }
                    ),
                resolve: ctx =>
            {
                var pessoa = ctx.GetArgument <Pessoa>("pessoa");

                context.Pessoas.Update(pessoa);
                context.SaveChanges();

                return(pessoa);
            });

            Field <StringGraphType>(
                "delete",
                description: "Excluir um registro de pessoa",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "id"
            }
                    ),
                resolve: ctx =>
            {
                var id     = ctx.GetArgument <int>("id");
                var pessoa = context.Pessoas.Find(id);

                context.Pessoas.Remove(pessoa);
                context.SaveChanges();

                return($"O registro {id} foi excluído com sucesso!.");
            });
        }
Exemplo n.º 2
0
        public PessoaQuery(MeetupGraphQLNetContext context)
        {
            Name = nameof(PessoaQuery);

            Field <PessoaType>(
                "byId",
                description: "Obter pessoa pelo id",
                arguments: new QueryArguments(new QueryArgument <IdGraphType>
            {
                Name        = "id",
                Description = "Id"
            }),
                resolve: ctx => context.Pessoas.Find(ctx.GetArgument <int>("id")));

            Field <ListGraphType <PessoaType> >(
                "all",
                description: "Obter os registros de pessoa",
                arguments: new QueryArguments(new QueryArgument <IntGraphType>
            {
                Name         = "index",
                DefaultValue = 0,
                Description  = "Índice da página"
            },
                                              new QueryArgument <IntGraphType>
            {
                Name         = "size",
                DefaultValue = 30,
                Description  = "Tamanho da página"
            },
                                              new QueryArgument <StringGraphType>
            {
                Name         = "name",
                DefaultValue = "",
                Description  = "Palavra de pesquisa"
            }),

                resolve: ctx => context.Pessoas
                .Take(ctx.GetArgument <int>("size"))
                .Skip(ctx.GetArgument <int>("index")));
        }