public Save ( |
||
entity | ||
return | void |
public void Save(AppUsageDurationSummary entity)
{
try
{
IMongoQuery query = Query.And
(
Query<AppUsageSummary>.EQ<DateTime>(mem => mem.Date, entity.Date),
Query<AppUsageSummary>.EQ<Guid>(mem => mem.ApplicationId, entity.ApplicationId),
Query<AppUsageSummary>.EQ<string>(mem => mem.Version, entity.Version),
Query<AppUsageSummary>.EQ<PlatformType>(mem => mem.PlatformId, entity.PlatformId)
);
IMongoUpdate update = Update<AppUsageDurationSummary>
.SetOnInsert(x => x.Version, entity.Version)
.SetOnInsert(x => x.Date, entity.Date)
.SetOnInsert(x => x.ApplicationId, entity.ApplicationId)
.SetOnInsert(x => x.PlatformId, entity.PlatformId)
//len
.Inc(mem => mem.LengthGroup._10sec, entity.LengthGroup._10sec)
.Inc(mem => mem.LengthGroup._20sec, entity.LengthGroup._20sec)
.Inc(mem => mem.LengthGroup._30sec, entity.LengthGroup._30sec)
.Inc(mem => mem.LengthGroup._1min, entity.LengthGroup._1min)
.Inc(mem => mem.LengthGroup._2min, entity.LengthGroup._2min)
.Inc(mem => mem.LengthGroup._4min, entity.LengthGroup._4min)
.Inc(mem => mem.LengthGroup._8min, entity.LengthGroup._8min)
.Inc(mem => mem.LengthGroup._16min, entity.LengthGroup._16min)
.Inc(mem => mem.LengthGroup._32min, entity.LengthGroup._32min)
.Inc(mem => mem.LengthGroup._1hr, entity.LengthGroup._1hr)
.Inc(mem => mem.LengthGroup.Over1hr, entity.LengthGroup.Over1hr)
.Inc(mem => mem.Count, entity.Count);
this.GetCollection<AppUsageDurationSummary>().FindAndModify(query, SortBy.Descending("Date"), update, false, true);
this.GetCollection<AppUsageDurationSummary>().EnsureIndex(IndexKeys.Descending("Date"));
}
catch (Exception ex)
{
throw new DataAccessLayerException(ex);
}
}
EventMapper::Save ( |
|
EventMapper::Save ( ContentLoadSummary entity ) : void | |
EventMapper::Save ( |
|
EventMapper::Save ( |
|
EventMapper::Save ( |
|
EventMapper::Save ( |
|
EventMapper::Save ( |
public void Save_AppUsageDurationSummary_ValuesIncrement() { EventMapper eventMapper = new EventMapper(this.client, this.database); Guid applicationId = Guid.NewGuid(); Guid deviceId = Guid.NewGuid(); AppUsageDurationSummary expected = new AppUsageDurationSummary() { ApplicationId = applicationId, Count = 2, Date = date, PlatformId = platform, Version = version, LengthGroup = new SessionLengthGroup() { _20sec = 2 } }; Event eventItem = new Event() { ApplicationId = applicationId, Date = date, Version = version, PlatformId = platform, DateCreatedOnDevice = dateCreatedOnDevice, ScreenName = "someScreen", EventName = "someEvent", DeviceId = deviceId, DateCreated = date, Length = 20000 }; AppUsageDurationSummary summary = new AppUsageDurationSummary(eventItem); eventMapper.Save(summary); eventMapper.Save(summary); IMongoQuery query = Query.And ( Query<AppUsageSummary>.EQ<DateTime>(mem => mem.Date, date), Query<AppUsageSummary>.EQ<Guid>(mem => mem.ApplicationId, applicationId), Query<AppUsageSummary>.EQ<string>(mem => mem.Version, version), Query<AppUsageSummary>.EQ<PlatformType>(mem => mem.PlatformId, platform) ); AppUsageDurationSummary actual = this.GetCollection<AppUsageDurationSummary>().FindOne(query); actual.ShouldHave().AllPropertiesBut(x => x.Id) .IncludingNestedObjects().EqualTo(expected); }