public async Task <IEnumerable <User> > GetAllAsync(string query) { var queryResult = await Task.Run(() => _graphQl.ExecuteQuery(query)); var serializedResult = JsonConvert.SerializeObject(queryResult["users"], Formatting.Indented); var users = JsonConvert.DeserializeObject <IEnumerable <User> >(serializedResult); return(users); }
public static void ChildFieldWithParameters <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("{ account(id:1) { id, name, firstUserWithActive(active:true) { id, name } } }"); Test.DeepEquals(results, "{ account: { id: 1, name: 'My Test Account', firstUserWithActive: { id: 1, name: 'Joe User' } } }"); results = gql.ExecuteQuery("{ account(id:1) { id, name, firstUserWithActive(active:false) { id, name } } }"); Test.DeepEquals(results, "{ account: { id: 1, name: 'My Test Account', firstUserWithActive: null } }"); }
public static bool ChildListFieldWithParameters <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("{ account(id:1) { id, name, usersWithActive(active:true) { id, name } } }"); return(Test.DeepEquals(results, "{ account: { id: 1, name: 'My Test Account', usersWithActive: [{ id: 1, name: 'Joe User' }] } }")); results = gql.ExecuteQuery("{ account(id:1) { id, name, usersWithActive(active:false) { id, name } } }"); return(Test.DeepEquals(results, "{ account: { id: 1, name: 'My Test Account', usersWithActive: [] } }")); }
public static void SimpleMutation <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("mutation { mutate(id:1,newVal:5) { id, value } }"); Test.DeepEquals(results, "{ mutate: { id: 1, value: 5 } }"); var results2 = gql.ExecuteQuery("mutation { mutate(id:1,newVal:123) { id, value } }"); Test.DeepEquals(results2, "{ mutate: { id: 1, value: 123 } }"); }
public static void EnumerableSubField <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("{ account(id:1) { activeUsers { id, name } } }"); Test.DeepEquals(results, "{ account: { activeUsers: [{ id: 1, name: 'Joe User' }] } }"); var results2 = gql.ExecuteQuery("{ account(id:2) { activeUsers { id, name } } }"); Test.DeepEquals(results2, "{ account: { activeUsers: [] } }"); }
public static void BasicQueryFetchLuke <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("query FetchLukeQuery { human(id: \"1000\") { name } }"); Test.DeepEquals(results, "{ human: { name: 'Luke Skywalker' } }"); }
public static void TypenameLukeHuman <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("query CheckTypeOfLuke { hero(episode: EMPIRE) { __typename, name } }"); Test.DeepEquals(results, "{ hero: { __typename: 'Human', name: 'Luke Skywalker' } }"); }
public static void TypenameR2Droid <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("query CheckTypeOfR2 { hero { __typename, name } }"); Test.DeepEquals(results, "{ hero: { __typename: 'Droid', name: 'R2-D2' } }"); }
public static void BasicQueryHeroWithIdAndFriends <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("query HeroNameQuery { hero { id, name, friends { name } } }"); Test.DeepEquals(results, "{ hero: { id: '2001', name: 'R2-D2', friends: [ { name: 'Luke Skywalker' },{ name: 'Han Solo' }, { name: 'Leia Organa'} ] } }"); }
public void RunExample2() { var schema = GraphQL <Context> .CreateDefaultSchema(() => new Context { Humans = new List <Human> { new Human { Id = "1000", Name = "Luke Skywalker", Height = 1.72 } } }); var humanSchema = schema.AddType <Human>(); humanSchema.AddField(h => h.Id); humanSchema.AddField(h => h.Name); humanSchema.AddField( "height", new { unit = "METER" }, (c, args, h) => args.unit == "FOOT" ? h.Height * 3.28084 : h.Height); schema.AddField( "human", new { id = "-1" }, (c, args) => c.Humans.SingleOrDefault(h => h.Id == args.id)); schema.Complete(); var gql = new GraphQL <Context>(schema); var queryResult = gql.ExecuteQuery("{human(id: \"1000\") {name, height(unit: \"FOOT\")}}"); DeepEquals(queryResult, "{human: {name: 'Luke Skywalker', height: 5.6430448}}"); }
public void RunExample() { var schema = GraphQL <Context> .CreateDefaultSchema(() => new Context { Humans = new List <Human> { new Human { Id = "1000", Name = "Luke Skywalker", Height = 1.72 } } }); schema.AddType <Human>().AddAllFields(); schema.AddField( "human", new { id = "-1" }, (c, args) => c.Humans.SingleOrDefault(h => h.Id == args.id)); schema.Complete(); var gql = new GraphQL <Context>(schema); var queryResult = gql.ExecuteQuery("{human(id: \"1000\") {name, height}}"); DeepEquals(queryResult, "{human: {name: 'Luke Skywalker', height: 1.72}}"); }
public static void FragmentsDuplicatedContent <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery( @" query DuplicateFields { luke: human(id: ""1000"") { name homePlanet } leia: human(id: ""1003"") { name homePlanet } } " ); Test.DeepEquals(results, @" { luke: { name: 'Luke Skywalker', homePlanet: 'Tatooine' }, leia: { name: 'Leia Organa', homePlanet: 'Alderaan' } } "); }
public void RunExample2() { var schema = GraphQL<Context>.CreateDefaultSchema(() => new Context { Humans = new List<Human> { new Human { Id = "1000", Name = "Luke Skywalker", Height = 1.72 } } }); var humanSchema = schema.AddType<Human>(); humanSchema.AddField(h => h.Id); humanSchema.AddField(h => h.Name); humanSchema.AddField( "height", new { unit = "METER"}, (c, args, h) => args.unit == "FOOT" ? h.Height * 3.28084 : h.Height); schema.AddField( "human", new { id = "-1" }, (c, args) => c.Humans.SingleOrDefault(h => h.Id == args.id)); schema.Complete(); var gql = new GraphQL<Context>(schema); var queryResult = gql.ExecuteQuery("{human(id: \"1000\") {name, height(unit: \"FOOT\")}}"); DeepEquals(queryResult, "{human: {name: 'Luke Skywalker', height: 5.6430448}}"); }
public static void ByteArrayParameter <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("{ account(id:1) { id, byteArray } }"); Test.DeepEquals(results, "{ account: { id: 1, byteArray: 'AQIDBA==' } }"); // [1, 2, 3, 4] serialized to base64 by Json.NET }
public void RunExample() { var schema = GraphQL <Context> .CreateDefaultSchema(() => new Context { Heros = new List <Hero> { new Hero { Id = "1000", Name = "Luke Skywalker", Episode = "EMPIRE" }, new Hero { Id = "1001", Name = "R2-D2", Episode = "JEDI" } } }); schema.AddType <Hero>().AddAllFields(); schema.AddField( "hero", new { episode = "EMPIRE" }, (c, args) => c.Heros.SingleOrDefault(h => h.Episode == args.episode)); schema.Complete(); var gql = new GraphQL <Context>(schema); var queryResult = gql.ExecuteQuery("{empireHero: hero(episode: \"EMPIRE\") {name}, jediHero: hero(episode: \"JEDI\") {name}}"); DeepEquals(queryResult, "{empireHero: {name: 'Luke Skywalker'}, jediHero: {name: 'R2-D2'}}"); }
public static void EnumFieldQuery <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("{ accountsByType(accountType:accountType_Gold) { id, accountType } }"); Test.DeepEquals(results, @"{ accountsByType: [ { id: 1, accountType: 'Gold' } ] }"); }
public static void GuidParameter <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("{ accountsByGuid(guid:\"00000000-0000-0000-0000-000000000000\") { id, someGuid } }"); Test.DeepEquals(results, @"{ accountsByGuid: [ { id: 1, someGuid: '00000000-0000-0000-0000-000000000000' }, { id: 2, someGuid: '00000000-0000-0000-0000-000000000000' }, ] }"); }
public void AddAllFields() { var schema = GraphQL<MemContext>.CreateDefaultSchema(() => new MemContext()); schema.AddType<User>().AddAllFields(); schema.AddType<Account>().AddAllFields(); schema.AddField("user", new { id = 0 }, (db, args) => db.Users.AsQueryable().FirstOrDefault(u => u.Id == args.id)); schema.Complete(); var gql = new GraphQL<MemContext>(schema); var results = gql.ExecuteQuery("{ user(id:1) { id, name } }"); Test.DeepEquals(results, "{ user: { id: 1, name: 'Joe User' } }"); }
public static void InlineFragementWithoutTypenameFieldWithoutOtherFields <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("{ heros { ... on Stormtrooper { height, specialization } } }"); Test.DeepEquals( results, "{ heros: [ " + "{ }, " + "{ height: 4.9, specialization: 'Imperial Snowtrooper'}, " + "{ } ] }" ); }
public static void IntrospectionDroidType <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery( @"query IntrospectionDroidTypeQuery { __type(name: ""Droid"") { name } }"); Test.DeepEquals(results, "{ __type: { name: 'Droid' } }"); }
public static void UnionTypeDroid <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery( @"query UnionTypeStarshipQuery { search(text: ""droid"") { __typename } }"); Test.DeepEquals(results, "{ search: { __typename: 'Droid'} }"); }
public static void FragementWithMultiLevelInheritance <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("{ heros { name, __typename, ... on Stormtrooper { height, specialization } } }"); Test.DeepEquals( results, "{ heros: [ " + "{ name: 'Han Solo', __typename: 'Human'}, " + "{ name: 'FN-2187', __typename: 'Stormtrooper', height: 4.9, specialization: 'Imperial Snowtrooper'}, " + "{ name: 'R2-D2', __typename: 'Droid' } ] }" ); }
public static void InlineFragementWithoutTypenameField <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery("{ heros { name, ... on Stormtrooper { height, specialization } } }"); Test.DeepEquals( results, "{ heros: [ " + "{ name: 'Han Solo'}, " + "{ name: 'FN-2187', height: 4.9, specialization: 'Imperial Snowtrooper'}, " + "{ name: 'R2-D2' } ] }" ); }
public static bool FragementWithMultipleTypenameFields <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery( "{ heros { name, ...stormtrooper, __typename } }, fragment stormtrooper on Stormtrooper { height, specialization, __typename } "); return(Test.DeepEquals( results, "{ heros: [ " + "{ name: 'Han Solo', __typename: 'Human'}, " + "{ name: 'FN-2187', height: 4.9, specialization: 'Imperial Snowtrooper', __typename: 'Stormtrooper'}, " + "{ name: 'R2-D2', __typename: 'Droid'} ] }" )); }
public static void IntrospectionCharacterInterface <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery( @"query IntrospectionCharacterKindQuery { __type(name: ""ICharacter"") { name kind } }"); Test.DeepEquals(results, "{ __type: { name: 'ICharacter', kind: 'INTERFACE' } }"); }
public static void FragementWithMultipleTypenameFieldsMixedWithInlineFragment <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery( "{ heros { ...stormtrooper, __typename, ... on Human {name}, ... on Droid {name}}}, fragment stormtrooper on Stormtrooper { name, height, specialization, __typename } "); Test.DeepEquals( results, "{ heros: [ " + "{ __typename: 'Human', name: 'Han Solo'}, " + "{ name: 'FN-2187', height: 4.9, specialization: 'Imperial Snowtrooper', __typename: 'Stormtrooper'}, " + "{ __typename: 'Droid', name: 'R2-D2'} ] }" ); }
public void AddAllFields() { var schema = GraphQL <EfContext> .CreateDefaultSchema(() => new EfContext()); schema.AddType <User>().AddAllFields(); schema.AddType <Account>().AddAllFields(); schema.AddField("user", new { id = 0 }, (db, args) => db.Users.FirstOrDefault(u => u.Id == args.id)); schema.Complete(); var gql = new GraphQL <EfContext>(schema); var results = gql.ExecuteQuery("{ user(id:1) { id, name } }"); Test.DeepEquals(results, "{ user: { id: 1, name: 'Joe User' } }"); }
public HttpResponseMessage GraphQLData(HttpRequestMessage query) { try { var gql = new GraphQL <BeerContext>(_schema); var dict = gql.ExecuteQuery(query.Content.ReadAsStringAsync().Result); return(Request.CreateResponse(HttpStatusCode.Accepted, dict)); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, ex)); } }
public static void InlineFragementWithListField <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery( "{ heros { name, __typename, ... on Human { height, vehicles { name } }, ... on Stormtrooper { specialization }, " + "... on Droid { primaryFunction } } }"); Test.DeepEquals( results, "{ heros: [ " + "{ name: 'Han Solo', __typename: 'Human', height: 5.6430448, vehicles: [ {name: 'Millennium falcon'}] }, " + "{ name: 'FN-2187', __typename: 'Stormtrooper', height: 4.9, vehicles: [ {name: 'Speeder bike'}], specialization: 'Imperial Snowtrooper'}, " + "{ name: 'R2-D2', __typename: 'Droid', primaryFunction: 'Astromech' } ] }" ); }
public static void InlineFragements <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery( "{ heros { name, __typename, ... on Human { height }, ... on Stormtrooper { specialization }, " + "... on Droid { primaryFunction } } }"); Test.DeepEquals( results, "{ heros: [ " + "{ name: 'Han Solo', __typename: 'Human', height: 5.6430448}, " + "{ name: 'FN-2187', __typename: 'Stormtrooper', height: 4.9, specialization: 'Imperial Snowtrooper'}, " + "{ name: 'R2-D2', __typename: 'Droid', primaryFunction: 'Astromech' } ] }" ); }
public static bool Fragements <TContext>(GraphQL <TContext> gql) { var results = gql.ExecuteQuery( "{ heros { name, __typename, ...human, ...stormtrooper, ...droid } }, " + "fragment human on Human { height }, " + "fragment stormtrooper on Stormtrooper { specialization }, " + "fragment droid on Droid { primaryFunction }"); return(Test.DeepEquals( results, "{ heros: [ " + "{ name: 'Han Solo', __typename: 'Human', height: 5.6430448}, " + "{ name: 'FN-2187', __typename: 'Stormtrooper', height: 4.9, specialization: 'Imperial Snowtrooper'}, " + "{ name: 'R2-D2', __typename: 'Droid', primaryFunction: 'Astromech' } ] }" )); }
public void RunExample() { var schema = GraphQL <Context> .CreateDefaultSchema(CreateDefaultContext); schema.AddType <Character>().AddAllFields(); schema.AddField("hero", c => c.Hero); schema.Complete(); var gql = new GraphQL <Context>(schema); var queryResult = gql.ExecuteQuery( @"{ hero { name, friends { name } } }" ); DeepEquals( queryResult, @"{ hero: { name: 'R2-D2', friends: [ { name: 'Luke Skywalker' }, { name: 'Han Solo' }, { name: 'Leia Organa' } ] } }" ); }
public void RunExample() { var schema = GraphQL<Context>.CreateDefaultSchema(() => new Context { Humans = new List<Human> { new Human { Id = "1000", Name = "Luke Skywalker", Height = 1.72 } } }); schema.AddType<Human>().AddAllFields(); schema.AddField( "human", new { id = "-1" }, (c, args) => c.Humans.SingleOrDefault(h => h.Id == args.id)); schema.Complete(); var gql = new GraphQL<Context>(schema); var queryResult = gql.ExecuteQuery("{human(id: \"1000\") {name, height}}"); DeepEquals(queryResult, "{human: {name: 'Luke Skywalker', height: 1.72}}"); }
public void RunExample() { var schema = GraphQL<Context>.CreateDefaultSchema(CreateDefaultContext); schema.AddType<Character>().AddAllFields(); schema.AddField("hero", c => c.Hero); schema.Complete(); var gql = new GraphQL<Context>(schema); var queryResult = gql.ExecuteQuery( @"{ hero { name, friends { name } } }" ); DeepEquals( queryResult, @"{ hero: { name: 'R2-D2', friends: [ { name: 'Luke Skywalker' }, { name: 'Han Solo' }, { name: 'Leia Organa' } ] } }" ); }
public void RunExample() { var schema = GraphQL<Context>.CreateDefaultSchema(() => new Context { Heros = new List<Hero> { new Hero { Id = "1000", Name = "Luke Skywalker", Episode = "EMPIRE" }, new Hero { Id = "1001", Name = "R2-D2", Episode = "JEDI" } } }); schema.AddType<Hero>().AddAllFields(); schema.AddField( "hero", new { episode = "EMPIRE" }, (c, args) => c.Heros.SingleOrDefault(h => h.Episode == args.episode)); schema.Complete(); var gql = new GraphQL<Context>(schema); var queryResult = gql.ExecuteQuery("{empireHero: hero(episode: \"EMPIRE\") {name}, jediHero: hero(episode: \"JEDI\") {name}}"); DeepEquals(queryResult, "{empireHero: {name: 'Luke Skywalker'}, jediHero: {name: 'R2-D2'}}"); }
public void RunExample() { var schema = GraphQL<Context>.CreateDefaultSchema(() => new Context { Heros = new List<Character> { new Character { Id = "1000", Name = "Luke Skywalker", Episode = "EMPIRE", AppearsIn = new string[] { "NEWHOPE", "EMPIRE", "JEDI"}, Friends = new List<Character> { new Character { Name = "Han Solo"}, new Character { Name = "Leia Organa"}, new Character { Name = "C-3PO"}, new Character { Name = "R2-D2"} } }, new Character { Id = "1001", Name = "R2-D2", Episode = "JEDI", AppearsIn = new string[] {"NEWHOPE", "EMPIRE", "JEDI" }, Friends = new List<Character> { new Character { Name = "Luke Skywalker"}, new Character { Name = "Han Solo"}, new Character { Name = "Leia Organa"} } } } }); schema.AddType<Character>().AddAllFields(); schema.AddField( "hero", new { episode = "EMPIRE" }, (c, args) => c.Heros.SingleOrDefault(h => h.Episode == args.episode)); schema.Complete(); var gql = new GraphQL<Context>(schema); var queryResult = gql.ExecuteQuery( @"{ leftComparison: hero(episode: ""EMPIRE"") { ...comparisonFields } rightComparison: hero(episode: ""JEDI"") { ...comparisonFields } } fragment comparisonFields on Character { name appearsIn friends { name } }" ); DeepEquals( queryResult, @"{ ""leftComparison"": { ""name"": ""Luke Skywalker"", ""appearsIn"": [ ""NEWHOPE"", ""EMPIRE"", ""JEDI"" ], ""friends"": [ { ""name"": ""Han Solo"" }, { ""name"": ""Leia Organa"" }, { ""name"": ""C-3PO"" }, { ""name"": ""R2-D2"" } ] }, ""rightComparison"": { ""name"": ""R2-D2"", ""appearsIn"": [ ""NEWHOPE"", ""EMPIRE"", ""JEDI"" ], ""friends"": [ { ""name"": ""Luke Skywalker"" }, { ""name"": ""Han Solo"" }, { ""name"": ""Leia Organa"" } ] } } "); }