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_"); }
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)); }
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)); }
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"); }
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()); }
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)); }
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)); }
/// <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(); }
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); }
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); }