Skip to content

Instantly share code, notes, and snippets.

View JeremyLikness's full-sized avatar

Jeremy Likness JeremyLikness

View GitHub Profile
@JeremyLikness
JeremyLikness / foodItem.json
Created August 26, 2017 17:29
Food items with an array of nutrients
{
foodItem: 'Purple pancakes',
nutrients: [
{ name: 'protein', amount: 100 },
{ name: 'carbohydate', amount: 1000 }
]
}
@JeremyLikness
JeremyLikness / foodItem.js
Created August 26, 2017 17:29
Food items with an array of nutrients
{
foodItem: 'Purple pancakes',
nutrients: [
{ name: 'protein', amount: 100 },
{ name: 'carbohydate', amount: 1000 }
]
}
@JeremyLikness
JeremyLikness / foodItem.js
Created August 26, 2017 17:30
Food item with nutrient properties
{
foodItem: 'Purple pancakes',
nutrients: {
protein: { amount: 100 }
carbohydrate: { amount: 1000 }
}
}
@JeremyLikness
JeremyLikness / FoodItem.cs
Created August 26, 2017 17:37
FoodItem class with BSON Document
public class FoodItem
{
[BsonId]
public string FoodId { get; set; }
public string FoodGroupId { get; set; }
public FoodGroup Group { get; set; }
public string Description { get; set; }
public string ShortDescription { get; set; }
public string CommonNames { get; set; }
@JeremyLikness
JeremyLikness / FoodItem.cs
Created August 26, 2017 17:40
Serializing the nutrient list
public void SerializeNutrients()
{
var root = new BsonDocument() { {"nutrients", new BsonDocument()} };
foreach (var nutrient in this.Nutrients)
{
if (string.IsNullOrWhiteSpace(nutrient.Definition.TagName))
{
continue;
}
root["nutrients"][nutrient.Definition.TagName] =
@JeremyLikness
JeremyLikness / FoodItem.cs
Created August 26, 2017 17:50
Deserializing the nutrient list
public void DeserializeNutrients(string tag = null)
{
var elements = this.NutrientDoc["nutrients"].AsBsonDocument;
var list = new List<Nutrient>();
foreach (var element in elements.Elements)
{
if (!string.IsNullOrWhiteSpace(tag)) {
if (element.Name != tag) {
continue;
}
@JeremyLikness
JeremyLikness / FoodsController.cs
Created August 26, 2017 17:56
A strongly-typed MongoDB query
var projection = Builders<FoodItem>.Projection
.Include(fi => fi.FoodId)
.Include(fi => fi.FoodGroupId)
.Include(fi => fi.Description)
.Include(fi => fi.ShortDescription);
var query = db.GetCollection<FoodItem>(Collections.GetCollectionName<FoodItem>());
var findFluent = query.Find(fi => fi.Description.Contains(search));
var projectedQuery = findFluent.Limit(100).Project(projection);
await projectedQuery.ForEachAsync(item => { // do something });
@JeremyLikness
JeremyLikness / NutrientsController.cs
Created August 26, 2017 18:00
A dynamic MongoDB query
var sort = Builders<BsonDocument>.Sort.Descending($"NutrientDoc.nutrients.{tag}.amount");
var projection = Builders<BsonDocument>.Projection
.Include("_id")
.Include("FoodGroupId")
.Include("ShortDescription")
.Include("Description")
.Include($"NutrientDoc.nutrients.{tag}");
var query = coll.Find(_ => true)
.Project(projection)
.Sort(sort)
@JeremyLikness
JeremyLikness / function.json
Created September 2, 2017 14:17
Binding for short link generator
{
"bindings": [
{
"type": "table",
"name": "keyTable",
"tableName": "urls",
"partitionKey": "1",
"rowKey": "KEY",
"take": 1,
"connection": "AzureWebJobsStorage",
@JeremyLikness
JeremyLikness / models.cs
Created September 2, 2017 14:19
Shared models for the function
using Microsoft.WindowsAzure.Storage.Table;
public class NextId : TableEntity
{
public int Id { get; set; }
}
public class ShortUrl : TableEntity
{
public string Url { get; set; }