public override string Save(BlogPost model)
        {
            var mapOp = new UpdateMap.MapOperation();

            mapOp.SetRegister(titleRegister, model.Title);
            mapOp.SetRegister(authorRegister, model.Author);
            mapOp.SetRegister(contentRegister, model.Content);
            mapOp.AddToSet(keywordsSet, model.Keywords);

            string datePostedSolrFormatted =
                model.DatePosted
                .ToUniversalTime()
                .ToString("yyyy-MM-dd'T'HH:mm:ss'Z'", CultureInfo.InvariantCulture);

            mapOp.SetRegister(datePostedRegister, datePostedSolrFormatted);

            mapOp.SetFlag(publishedFlag, model.Published);

            // NB: no key so Riak will generate it
            var cmd = new UpdateMap.Builder()
                      .WithBucketType(BucketType)
                      .WithBucket(this.bucket)
                      .WithMapOperation(mapOp)
                      .Build();

            RiakResult rslt = client.Execute(cmd);

            CheckResult(rslt);
            MapResponse response = cmd.Response;

            return(response.Key);
        }
Esempio n. 2
0
        public void AddInterest(User model, string interest)
        {
            var mapOperation = new UpdateMap.MapOperation();

            mapOperation.AddToSet(interestsSet, interest);

            // Adding to a set does not require context
            UpdateMap(model, mapOperation, fetchFirst: false);
        }
Esempio n. 3
0
        public override string Save(User model)
        {
            var mapOperation = new UpdateMap.MapOperation();

            mapOperation.SetRegister(firstNameRegister, model.FirstName);
            mapOperation.SetRegister(lastNameRegister, model.LastName);
            mapOperation.IncrementCounter(pageVisitsCounter, model.PageVisits);
            mapOperation.AddToSet(interestsSet, model.Interests);

            // Insert does not require context
            RiakString key = UpdateMap(model, mapOperation, fetchFirst: false);

            return((string)key);
        }
        public void Maps()
        {
            var builder = new UpdateMap.Builder()
                          .WithBucketType("maps")
                          .WithBucket("customers")
                          .WithKey("ahmed_info");

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Initial import of Ahmed's data and contact");

            var mapOperation = new UpdateMap.MapOperation();

            // Ahmed's first name
            mapOperation.SetRegister("first_name", "Ahmed");

            // Ahmed's phone number
            mapOperation.SetRegister("phone_number", "5551234567");

            builder.WithMapOperation(mapOperation);
            MapResponse response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Set Ahmed to NOT be an enterprise customer right now");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.SetFlag("enterprise_customer", false);

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("enterprise_customer flag value");

            Map ahmedMap = response.Value;

            Console.WriteLine("Ahmed enterprise_customer: {0}", ahmedMap.Flags["enterprise_customer"]);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Add page visits counter for Ahmed");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.IncrementCounter("page_visits", 1);

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Add Ahmed's interests set");

            var interestsAdds = new[] { "robots", "opera", "motorcycles" };

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.AddToSet("interests", interestsAdds);

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            ahmedMap = response.Value;

            Assert.True(ahmedMap.Sets.GetValue("interests").Contains("robots"));
            Assert.True(ahmedMap.Sets.GetValue("interests").Contains("opera"));
            Assert.True(ahmedMap.Sets.GetValue("interests").Contains("motorcycles"));

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Updating Ahmed's interests");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.AddToSet("interests", "indie pop");
            mapOperation.RemoveFromSet("interests", "opera");

            builder
            .WithMapOperation(mapOperation)
            .WithContext(response.Context);
            response = SaveMap(builder);

            ahmedMap = response.Value;

            Assert.False(ahmedMap.Sets.GetValue("interests").Contains("opera"));
            Assert.True(ahmedMap.Sets.GetValue("interests").Contains("indie pop"));

            Assert.True(ahmedMap.Sets.GetValue("interests").Contains("robots"));
            Assert.True(ahmedMap.Sets.GetValue("interests").Contains("motorcycles"));

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Adding Annika map");

            mapOperation = new UpdateMap.MapOperation();

            UpdateMap.MapOperation annikaInfoOperation = mapOperation.Map("annika_info");
            annikaInfoOperation.SetRegister("first_name", "Annika");
            annikaInfoOperation.SetRegister("last_name", "Weiss");
            annikaInfoOperation.SetRegister("phone_number", "5559876543");

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Annika's first name");

            ahmedMap = response.Value;
            Console.WriteLine(ahmedMap.Maps["annika_info"].Registers.GetValue("first_name"));

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Removing Annika's first name");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.Map("annika_info").RemoveRegister("first_name");

            builder
            .WithMapOperation(mapOperation)
            .WithContext(response.Context);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Storing Annika's plan flags");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.Map("annika_info")
            .SetFlag("enterprise_plan", false)
            .SetFlag("family_plan", false)
            .SetFlag("free_plan", true);

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Is Annika on enterprise plan?");

            ahmedMap = response.Value;
            Console.WriteLine(ahmedMap.Maps["annika_info"].Flags["enterprise_plan"]);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Adding Annika's widget_purchases counter");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.Map("annika_info").IncrementCounter("widget_purchases", 1);

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Adding Annika's interests in a set");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.Map("annika_info").AddToSet("interests", "tango dancing");

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Remove \"tango dancing\" from Annika's interests");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.Map("annika_info").RemoveFromSet("interests", "tango dancing");

            builder
            .WithMapOperation(mapOperation)
            .WithContext(response.Context);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Add specific purchase info to Annika's data");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.Map("annika_info").Map("purchase")
            .SetFlag("first_purchase", true)
            .SetRegister("amount", "1271")
            .AddToSet("items", "large widget");

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("Context: {0}", Convert.ToBase64String(response.Context));
        }
        public void Maps()
        {
            var builder = new UpdateMap.Builder()
                .WithBucketType("maps")
                .WithBucket("customers")
                .WithKey("ahmed_info");

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Initial import of Ahmed's data and contact");

            var mapOperation = new UpdateMap.MapOperation();

            // Ahmed's first name
            mapOperation.SetRegister("first_name", "Ahmed");

            // Ahmed's phone number
            mapOperation.SetRegister("phone_number", "5551234567");

            builder.WithMapOperation(mapOperation);
            MapResponse response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Set Ahmed to NOT be an enterprise customer right now");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.SetFlag("enterprise_customer", false);

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("enterprise_customer flag value");

            Map ahmedMap = response.Value;
            Console.WriteLine("Ahmed enterprise_customer: {0}", ahmedMap.Flags["enterprise_customer"]);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Add page visits counter for Ahmed");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.IncrementCounter("page_visits", 1);

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Add Ahmed's interests set");

            var interestsAdds = new[] { "robots", "opera", "motorcycles" };

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.AddToSet("interests", interestsAdds);

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            ahmedMap = response.Value;

            Assert.True(ahmedMap.Sets.GetValue("interests").Contains("robots"));
            Assert.True(ahmedMap.Sets.GetValue("interests").Contains("opera"));
            Assert.True(ahmedMap.Sets.GetValue("interests").Contains("motorcycles"));

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Updating Ahmed's interests");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.AddToSet("interests", "indie pop");
            mapOperation.RemoveFromSet("interests", "opera");

            builder
                .WithMapOperation(mapOperation)
                .WithContext(response.Context);
            response = SaveMap(builder);

            ahmedMap = response.Value;

            Assert.False(ahmedMap.Sets.GetValue("interests").Contains("opera"));
            Assert.True(ahmedMap.Sets.GetValue("interests").Contains("indie pop"));

            Assert.True(ahmedMap.Sets.GetValue("interests").Contains("robots"));
            Assert.True(ahmedMap.Sets.GetValue("interests").Contains("motorcycles"));

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Adding Annika map");

            mapOperation = new UpdateMap.MapOperation();

            UpdateMap.MapOperation annikaInfoOperation = mapOperation.Map("annika_info");
            annikaInfoOperation.SetRegister("first_name", "Annika");
            annikaInfoOperation.SetRegister("last_name", "Weiss");
            annikaInfoOperation.SetRegister("phone_number", "5559876543");

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Annika's first name");

            ahmedMap = response.Value;
            Console.WriteLine(ahmedMap.Maps["annika_info"].Registers.GetValue("first_name"));

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Removing Annika's first name");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.Map("annika_info").RemoveRegister("first_name");

            builder
                .WithMapOperation(mapOperation)
                .WithContext(response.Context);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Storing Annika's plan flags");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.Map("annika_info")
                .SetFlag("enterprise_plan", false)
                .SetFlag("family_plan", false)
                .SetFlag("free_plan", true);

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Is Annika on enterprise plan?");

            ahmedMap = response.Value;
            Console.WriteLine(ahmedMap.Maps["annika_info"].Flags["enterprise_plan"]);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Adding Annika's widget_purchases counter");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.Map("annika_info").IncrementCounter("widget_purchases", 1);

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Adding Annika's interests in a set");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.Map("annika_info").AddToSet("interests", "tango dancing");

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Remove \"tango dancing\" from Annika's interests");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.Map("annika_info").RemoveFromSet("interests", "tango dancing");

            builder
                .WithMapOperation(mapOperation)
                .WithContext(response.Context);
            response = SaveMap(builder);

            Console.WriteLine("------------------------------------------------------------------------\n");
            Console.WriteLine("Add specific purchase info to Annika's data");

            mapOperation = new UpdateMap.MapOperation();
            mapOperation.Map("annika_info").Map("purchase")
                .SetFlag("first_purchase", true)
                .SetRegister("amount", "1271")
                .AddToSet("items", "large widget");

            builder.WithMapOperation(mapOperation);
            response = SaveMap(builder);

            Console.WriteLine("Context: {0}", Convert.ToBase64String(response.Context));
        }