Пример #1
0
        private static string GetAbcPostField() => "easy as 123"; // mimic an in-memory function

        private static void InitializeAccountSchema(GraphQLSchema <EfContext> schema)
        {
            var account = schema.AddType <Account>();

            account.AddField(a => a.Id);
            account.AddField(a => a.Name);
            account.AddField(a => a.Paid);
            account.AddField(a => a.SomeGuid);
            account.AddField(a => a.ByteArray);
            account.AddField(a => a.AccountType);
            account.AddListField(a => a.Users);
            account.AddListField("activeUsers", (db, a) => a.Users.Where(u => u.Active));
            account.AddListField("usersWithActive", new { active = false }, (db, args, a) => a.Users.Where(u => u.Active == args.active));
            account.AddField("firstUserWithActive", new { active = false }, (db, args, a) => a.Users.FirstOrDefault(u => u.Active == args.active));

            schema.AddField("account", new { id = 0 }, (db, args) => db.Accounts.FirstOrDefault(a => a.Id == args.id));
            schema.AddField
                ("accountPaidBy", new { paid = default(DateTime) },
                (db, args) => db.Accounts.AsQueryable().FirstOrDefault(a => a.PaidUtc <= args.paid));
            schema.AddListField("accountsByGuid", new { guid = Guid.Empty },
                                (db, args) => db.Accounts.AsQueryable().Where(a => a.SomeGuid == args.guid));
            schema.AddListField("accountsByType", new { accountType = AccountType.None },
                                (db, args) => db.Accounts.AsQueryable().Where(a => a.AccountType == args.accountType));
            schema.AddEnum <AccountType>(prefix: "accountType_");
            //add this enum just so it is part of the schema
            schema.AddEnum <MaterialType>(prefix: "materialType_");
        }
Пример #2
0
        private static void InitializeMutationSchema(GraphQLSchema <EfContext> schema)
        {
            var mutate = schema.AddType <MutateMe>();

            mutate.AddAllFields();

            schema.AddField("mutateMes", new { id = 0 }, (db, args) => db.MutateMes.AsQueryable().FirstOrDefault(a => a.Id == args.id));
            schema.AddMutation("mutate",
                               new { id = 0, newVal = 0 },
                               (db, args) =>
            {
                var mutateMe   = db.MutateMes.First(m => m.Id == args.id);
                mutateMe.Value = args.newVal;
                db.SaveChanges();
            },
                               (db, args) => db.MutateMes.AsQueryable().FirstOrDefault(a => a.Id == args.id));
            schema.AddMutation("addMutate",
                               new { newVal = 0 },
                               (db, args) =>
            {
                var newMutate = new MutateMe {
                    Value = args.newVal
                };
                db.MutateMes.Add(newMutate);
                db.SaveChanges();
                return(newMutate.Id);
            },
                               (db, args, id) => db.MutateMes.AsQueryable().FirstOrDefault(a => a.Id == id));
        }
Пример #3
0
        private static void InitializeMutationSchema(GraphQLSchema <MemContext> schema)
        {
            var mutate = schema.AddType <MutateMe>();

            mutate.AddAllFields();

            schema.AddField("mutateMes", new { id = 0 }, (db, args) => db.MutateMes.AsQueryable().FirstOrDefault(a => a.Id == args.id));
            schema.AddMutation("mutate",
                               new { id = 0, newVal = 0 },
                               (db, args) =>
            {
                var mutateMe   = db.MutateMes.First(m => m.Id == args.id);
                mutateMe.Value = args.newVal;
            },
                               (db, args) => db.MutateMes.AsQueryable().FirstOrDefault(a => a.Id == args.id));
            schema.AddMutation("addMutate",
                               new { newVal = 0 },
                               (db, args) =>
            {
                var newMutate = new MutateMe {
                    Value = args.newVal
                };
                db.MutateMes.Add(newMutate);
                // simulate Id being set by database
                newMutate.Id = db.MutateMes.Max(m => m.Id) + 1;
                return(newMutate.Id);
            },
                               (db, args, id) => db.MutateMes.AsQueryable().FirstOrDefault(a => a.Id == id));
        }
Пример #4
0
        public static void Create <TContext>(GraphQLSchema <TContext> schema,
                                             Func <TContext, IQueryable <ICharacter> > herosProviderFunc)
        {
            schema.AddEnum <EpisodeEnum>();

            var characterInterface = schema.AddInterfaceType <ICharacter>();

            characterInterface.AddAllFields();

            var humanType = schema.AddType <Human>();

            humanType.AddAllFields();
            humanType.AddInterface(characterInterface);

            var droidType = schema.AddType <Droid>();

            droidType.AddAllFields();
            droidType.AddInterface(characterInterface);

            var starshipType = schema.AddType <Starship>();

            starshipType.AddAllFields();

            schema.AddUnionType("SearchResult",
                                new[] { typeof(Droid), typeof(Human), typeof(Starship) });

            schema.AddField(
                "hero",
                new { episode = EpisodeEnum.NEWHOPE },
                (db, args) => args.episode == EpisodeEnum.EMPIRE
                // Luke is the hero of Episode V.
                    ? herosProviderFunc(db).FirstOrDefault(h => h.Id == "1000")
                // Artoo is the hero otherwise.
                    : herosProviderFunc(db).FirstOrDefault(h => h.Id == "2001"));
            schema.AddField("human", new { id = "" },
                            (db, args) => herosProviderFunc(db).OfType <Human>().FirstOrDefault(c => c.Id == args.id));
            schema.AddField("droid", new { id = "" },
                            (db, args) => herosProviderFunc(db).OfType <Droid>().FirstOrDefault(c => c.Id == args.id));
            schema.AddField("search", new { text = "" },
                            (db, args) => args.text == "starship"
                        ? new Starship() as object
                        : (args.text == "droid"
                            ? new Droid() as object
                            : new Human() as object))
            .WithReturnType("SearchResult");
        }
Пример #5
0
        private static void InitializeCharacterSchema(GraphQLSchema <EfContext> schema)
        {
            schema.AddType <Character>().AddAllFields();
            schema.AddType <Human>().AddAllFields();
            schema.AddType <Stormtrooper>().AddAllFields();
            schema.AddType <Droid>().AddAllFields();
            schema.AddType <Vehicle>().AddAllFields();

            schema.AddField("hero", new { id = 0 }, (db, args) => db.Heros.SingleOrDefault(h => h.Id == args.id));
            schema.AddListField("heros", db => db.Heros.AsQueryable());
        }
Пример #6
0
        private static void InitializeUserSchema(GraphQLSchema <EfContext> schema)
        {
            var user = schema.AddType <User>();

            user.AddField(u => u.Id);
            user.AddField(u => u.Name);
            user.AddField(u => u.Account);
            user.AddField(u => u.NullRef);
            user.AddField("total", (db, u) => db.Users.Count());
            user.AddField("accountPaid", (db, u) => u.Account.Paid);
            user.AddPostField("abc", () => GetAbcPostField());
            user.AddPostField("sub", () => new Sub {
                Id = 1
            });

            schema.AddType <Sub>().AddField(s => s.Id);
            schema.AddListField("users", db => db.Users);
            schema.AddField("user", new { id = 0 }, (db, args) => db.Users.FirstOrDefault(u => u.Id == args.id));
            schema.AddField("userByName", new { name = "" }, (db, args) => db.Users.FirstOrDefault(u => u.Name == args.name));
        }
Пример #7
0
        private static string GetAbcPostField() => "easy as 123"; // mimic an in-memory function

        public static void InitializeAccountSchema(GraphQLSchema <MemContext> schema)
        {
            var account = schema.AddType <Account>();

            account.AddField(a => a.Id);
            account.AddField(a => a.Name);
            account.AddField(a => a.Paid);
            account.AddField(a => a.SomeGuid);
            account.AddField(a => a.ByteArray);
            account.AddListField(a => a.Users);
            account.AddListField("activeUsers", (db, a) => a.Users.Where(u => u.Active));
            account.AddListField("usersWithActive", new { active = false }, (db, args, a) => a.Users.Where(u => u.Active == args.active));
            account.AddField("firstUserWithActive", new { active = false }, (db, args, a) => a.Users.FirstOrDefault(u => u.Active == args.active));

            schema.AddField("account", new { id = 0 }, (db, args) => db.Accounts.AsQueryable().FirstOrDefault(a => a.Id == args.id));
            schema.AddField
                ("accountPaidBy", new { paid = default(DateTime) },
                (db, args) => db.Accounts.AsQueryable().FirstOrDefault(a => a.PaidUtc <= args.paid));
            schema.AddListField("accountsByGuid", new { guid = Guid.Empty },
                                (db, args) => db.Accounts.AsQueryable().Where(a => a.SomeGuid == args.guid));
        }
Пример #8
0
        /// <summary>
        ///  Initialization of Beer Schema
        /// </summary>
        /// <param name="schema"></param>
        private static void InitializeBeerSchema(GraphQLSchema <BeerContext> schema)
        {
            var beer = schema.AddType <Beers>();

            beer.AddField(b => b.Id);
            beer.AddField(b => b.Name);
            beer.AddField(b => b.AverageRatings);
            beer.AddListField("beerRatings", (db, b) => b.BeerRatings);
            beer.AddField(t => t.BeerTypes);
            beer.AddField("beerType", (db, u) => u.BeerTypes.Name);
            schema.AddListField("Beers", db => db.Beers);

            schema.AddField("Beer", new { id = 0 }, (db, args) => db.Beers.FirstOrDefault(u => u.Id == args.id));
            schema.AddListField("FindBeer", new { match = string.Empty }, (db, args) => db.Beers.Where(b => b.Name.ToLower().Contains(args.match.ToLower())));
        }
        public RepositorioDeConsulta()          //ModeloPeliculas modelo)
        {
            var modelo = new ModeloPeliculas(); // = modelo;
            var pel    = modelo.Peliculas.FirstOrDefault();

            _schema = GraphQL <ModeloPeliculas> .CreateDefaultSchema(() => modelo);

            var pelicula = _schema.AddType <Pelicula>();

            pelicula.AddField(p => p.Id);
            pelicula.AddField(p => p.Nombre);

            _schema.AddListField("peliculas", db => db.Peliculas);
            _schema.AddField("pelicula", new { id = 0 }, (db, args) => db.Peliculas.Where(p => p.Id == args.id).FirstOrDefault());
            _schema.Complete();
        }
Пример #10
0
        public GraphQLSchemaProvider()
        {
            var options2 = new DbContextOptionsBuilder <AdventureWorksDbContext>();

            options2.UseSqlServer(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
            GraphQLSchema <AdventureWorksDbContext> schema = GraphQL <AdventureWorksDbContext> .CreateDefaultSchema(() => new AdventureWorksDbContext(options2.Options));

            schema.AddType <Employee>().AddAllFields();
            schema.AddListField("employees", db => db.Employees);
            schema.AddField("employee", new { id = 0 }, (db, args) => db.Employees.FirstOrDefault(u => u.EmployeeID == args.id));

            schema.AddType <JobCandidate>().AddAllFields();
            schema.AddType <Shift>().AddAllFields();
            schema.AddType <Department>().AddAllFields();

            schema.Complete();

            gql = new GraphQL <AdventureWorksDbContext>(schema);
        }
Пример #11
0
        public GraphQLService(IContext dbContext)
        {
            GraphQLSchema <TestContext> schema = GraphQL <TestContext> .CreateDefaultSchema(() => dbContext.Context as TestContext);



            var user = schema.AddType <User>();

            user.AddAllFields();
            user.AddField("totalUsers", (db, u) => db.Users.Count());
            user.AddField("accountPaid", (db, u) => u.Account.Paid);

            schema.AddType <Account>().AddAllFields();
            schema.AddListField("users", db => db.Users);
            schema.AddField("user", new { id = 0 }, (db, args) => db.Users.Where(u => u.Id == args.id).FirstOrDefault());
            schema.Complete();


            graphQL = new GraphQL <TestContext>(schema);
        }