private Deltaboard createDeltaboard(string id, DeltaboardType type, DateTime createdUtc) { return(new Deltaboard { Id = id, // Composite keys aren't supported in LiteDb DeltaboardType = type, CreatedUtc = createdUtc, LastUpdatedUtc = createdUtc, Entries = new List <DeltaboardEntry>() }); }
private Deltaboard getCurrentDeltaboard(LiteCollection <Deltaboard> deltaboardCollection, DeltaboardType type) { DateTime startUtc; switch (type) { case DeltaboardType.Daily: startUtc = DateTime.Today.AddDays(1).ToUniversalTime(); break; case DeltaboardType.Weekly: startUtc = DateTime.Now.StartOfWeek(DayOfWeek.Monday).ToUniversalTime(); break; case DeltaboardType.Monthly: startUtc = DateTime.Now.StartOfMonth().ToUniversalTime(); break; case DeltaboardType.Yearly: startUtc = DateTime.Now.StartOfYear().ToUniversalTime(); break; case DeltaboardType.AllTime: startUtc = DateTime.MinValue.ToUniversalTime(); break; default: throw new UnhandledEnumException <DeltaboardType>(type); } // Find deltaboard string id = $"{type}-{startUtc}"; var deltaboard = deltaboardCollection .Include(d => d.Entries) .FindById(id); // Create if it doesn't exist if (deltaboard == null) { deltaboard = createDeltaboard(id, type, startUtc); deltaboardCollection.EnsureIndex(d => d.Id, true); deltaboardCollection.Insert(deltaboard); } return(deltaboard); }