// first we add our object to the food collection
var collectionData = new Dictionary<string, object>();
collectionData.Add("name", "Cheese Burger");
collectionData.Add("ingredients", new[] { "cheese", "burger", "bread", "lettuce", "tomato" });
var cheeseBurger = await client.Collections.AddAsync("food", collectionData, "123");
// the object returned by .add can be embedded directly inside of an activity
var activity = new Activity("jim", "grill", cheeseBurger.Ref("food"));
await userFeed.AddActivityAsync(activity);
// if we now read the feed, the activity we just added will include the entire full object
await userFeed.GetEnrichedFlatActivitiesAsync();Enrichment
Enrichment of Collection Entries
Objects stored inside collections can be embedded inside activities or user objects. This allows you to integrate with Stream without building a complex integration with another database. Stream's collections can be used as your data source for data enrichment.
// first we add our object to the food collection
CollectionData cheeseBurger = client.collections().add("food", new CollectionData("123")
.set("name", "Cheese Burger")
.set("ingredients", Lists.newArrayList("cheese", "burger", "bread", "lettuce", "tomato"))).join();
// the object returned by .add can be embedded directly inside of an activity
userFeed.addActivity(Activity.builder()
.actor(createUserReference("john-doe"))
.verb("grill")
.object(createCollectionReference(cheeseBurger.getCollection(), cheeseBurger.getID()))
.build()).join();
// if we now read the feed, the activity we just added will include the entire full object
userFeed.getEnrichedActivities();
// we can then update the object and Stream will propagate the change to all activities
client.collections().update(cheeseBurger.getCollection(), cheeseBurger
.set("name", "Amazing Cheese Burger")
.set("ingredients", Lists.newArrayList("cheese", "burger", "bread", "lettuce", "tomato"))).join();