コード例 #1
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));
        }
コード例 #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
        /// <summary>
        ///  Initialization for Beer Schema for Mutation
        /// </summary>
        /// <param name="schema"></param>
        private static void InitializeMutationSchema(GraphQLSchema <BeerContext> schema)
        {
            schema.AddMutation("addBeer",
                               new { id = 0, name = string.Empty, averageRatings = 0, beerTypeId = 0 },
                               (db, args) =>
            {
                var newBeer = new Beers {
                    Name = args.name, BeerTypeId = args.beerTypeId, AverageRatings = args.averageRatings
                };
                db.Beers.Add(newBeer);
                db.SaveChanges();
                return(newBeer.Id);
            },
                               (db, args, id) => db.Beers.AsQueryable().FirstOrDefault(a => a.Id == id));

            schema.AddMutation("putBeer",
                               new { id = 0, name = string.Empty, averageRatings = 0, beerTypeId = 0 },
                               (db, args) =>
            {
                var oldBeer = db.Beers.Find(args.id);
                if (oldBeer != null)
                {
                    oldBeer.Name            = args.name;
                    oldBeer.BeerTypeId      = args.beerTypeId;
                    oldBeer.AverageRatings  = args.averageRatings;
                    db.Entry(oldBeer).State = EntityState.Modified;
                    db.SaveChanges();
                    return(oldBeer.Id);
                }
                return(0);
            },
                               (db, args, id) => db.Beers.AsQueryable().FirstOrDefault(a => a.Id == id));

            schema.AddMutation("deleteBeer",
                               new { id = 0 },
                               (db, args) =>
            {
                var oldBeer = db.Beers.Find(args.id);
                if (oldBeer != null)
                {
                    db.Beers.Remove(oldBeer);
                    db.SaveChanges();
                    return(oldBeer.Id);
                }
                return(0);
            },
                               (db, args, id) => db.Beers.AsQueryable().FirstOrDefault(a => a.Id == id));


            schema.AddMutation("addBeerRating",
                               new { id = 0, rating = 0, beerId = 0 },
                               (db, args) =>
            {
                var beerRating = new BeerRatings {
                    Id = args.id, Rating = args.rating, BeerId = args.beerId
                };
                db.BeerRatings.Add(beerRating);
                db.SaveChanges();

                var allRatings       = db.BeerRatings.Where(r => r.BeerId == beerRating.BeerId).Select(r => r.Rating).ToList();
                double averageRating = allRatings.Average();
                var bee = db.Beers.FirstOrDefault(b => b.Id == beerRating.BeerId);
                if (bee != null)
                {
                    bee.AverageRatings  = averageRating;
                    db.Entry(bee).State = EntityState.Modified;
                    db.SaveChanges();
                    return(bee.Id);
                }
                return(0);
            },
                               (db, args, id) => db.Beers.AsQueryable().FirstOrDefault(a => a.Id == id));
        }