public void TimeBetween() { if (!Connector.Current.SupportsTemporalTables) { return; } Interval <DateTime> period; using (SystemTime.Override(new SystemTime.All())) { period = Database.Query <FolderEntity>().Where(a => a.Name == "X2").Select(a => a.SystemPeriod()).Single(); } using (SystemTime.Override(new SystemTime.AsOf(period.Min))) { var a = Database.Query <FolderEntity>().Where(f1 => f1.Name == "X2").ToList(); } using (SystemTime.Override(new SystemTime.Between(period.Max, period.Max.AddSeconds(1)))) { var a = Database.Query <FolderEntity>().Where(f1 => f1.Name == "X2").ToList(); } using (SystemTime.Override(new SystemTime.FromTo(period.Max, period.Max.AddSeconds(1)))) { var b = Database.Query <FolderEntity>().Where(f2 => f2.Name == "X2").ToList(); } }
public override async Task <object?> ExecuteQueryValueAsync(QueryValueRequest request, CancellationToken token) { using (SystemTime.Override(request.SystemTime)) { var query = Query.ToDQueryable(GetQueryDescription()) .SelectMany(request.Multiplications) .Where(request.Filters); if (request.ValueToken == null) { return(await query.Query.CountAsync(token)); } if (request.ValueToken is AggregateToken) { return(await query.SimpleAggregateAsync((AggregateToken)request.ValueToken, token)); } if (request.MultipleValues) { return(await query.SelectOne(request.ValueToken).ToListAsync(token)); } return(await query.SelectOne(request.ValueToken).UniqueAsync(UniqueType.SingleOrDefault, token)); } }
public Entity RetrieveVersion(string typeName, string id, DateTime asOf) { var type = TypeLogic.GetType(typeName); var pk = PrimaryKey.Parse(id, type); using (SystemTime.Override(asOf.AddMilliseconds(1))) return(Database.Retrieve(type, pk)); }
public override async Task <ResultTable> ExecuteQueryGroupAsync(QueryRequest request, CancellationToken token) { using (SystemTime.Override(request.SystemTime)) { DQueryable <T> query = GetDQueryable(request); var result = await query.TryPaginateAsync(request.Pagination, token); return(result.ToResultTable(request)); } }
public override ResultTable ExecuteQueryGroup(QueryRequest request) { using (SystemTime.Override(request.SystemTime)) { DQueryable <T> query = GetDQueryable(request); var result = query.TryPaginate(request.Pagination); return(result.ToResultTable(request)); } }
public List <StringDistance.DiffPair <List <StringDistance.DiffPair <string> > > > DiffVersiones(string typeName, string id, DateTime from, DateTime to) { var type = TypeLogic.GetType(typeName); var pk = PrimaryKey.Parse(id, type); var f = SystemTime.Override(from.AddMilliseconds(1)).Using(_ => Database.Retrieve(type, pk)); var t = SystemTime.Override(to.AddMilliseconds(1)).Using(_ => Database.Retrieve(type, pk)); var fDump = GetDump(f); var tDump = GetDump(t); StringDistance sd = new StringDistance(); return(sd.DiffText(fDump, tDump)); }
public override object?ExecuteQueryValue(QueryValueRequest request) { using (SystemTime.Override(request.SystemTime)) { var query = Query.ToDQueryable(GetQueryDescription()) .SelectMany(request.Multiplications) .Where(request.Filters); if (request.ValueToken == null) { return(query.Query.Count()); } if (request.ValueToken is AggregateToken) { return(query.SimpleAggregate((AggregateToken)request.ValueToken)); } return(query.SelectOne(request.ValueToken).Unique(UniqueType.Single)); } }
public void TimeAll() { if (!Connector.Current.SupportsTemporalTables) { return; } using (SystemTime.Override(new SystemTime.All())) { var list = (from f in Database.Query <FolderEntity>() where f.Parent != null select new { f.Name, Period = f.SystemPeriod(), Parent = f.Parent.Entity.Name, ParentPeriod = f.Parent.Entity.SystemPeriod() }).ToList(); Assert.True(list.All(a => a.Period.Overlaps(a.ParentPeriod))); } }