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 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 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)); }
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.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)); }
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)); }