Пример #1
0
        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();
            }
        }
Пример #2
0
        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));
            }
        }
Пример #3
0
        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));
        }
Пример #4
0
        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));
            }
        }
Пример #5
0
        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));
            }
        }
Пример #6
0
        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));
        }
Пример #7
0
        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));
            }
        }
Пример #8
0
        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)));
            }
        }