Exemple #1
0
        private int GetCount(IEnumerable <OptionModel> options, bool fromView = true)
        {
            var sqlScript = options.GetValue("puller_sql_script");

            if (fromView)
            {
                sqlScript = $@"
SELECT COUNT(*) AS TotalCount
FROM [{EntityModel.SourceViewName}]";
            }
            else
            {
                sqlScript = $@"
SELECT COUNT(*) AS TotalCount
FROM (
    {sqlScript}
)";
            }

            var set = adapter.Query(sqlScript).FirstOrDefault();
            var row = set?.Rows?.FirstOrDefault();

            if (row == null)
            {
                return(0);
            }
            var totalCount = JObject.FromObject(row).GetValue("TotalCount").ToString();
            var canParse   = int.TryParse(totalCount, out int result);

            if (!canParse)
            {
                return(0);
            }
            return(result);
        }
Exemple #2
0
        public override PullResult PullNext(object lastToken = null)
        {
            using (var attributeRepository = ResolverFactory.Resolve <AttributeRepository>())
            {
                var options = attributeRepository.LoadOptions(AttributeModel.Id.ToString());
                var limit   = options.GetValue("puller_page_limit", 100);
                var offset  = 0;
                if (lastToken != null)
                {
                    var jToken = JObject.FromObject(lastToken);
                    if (jToken != null && jToken.ContainsKey("Limit") && jToken.ContainsKey("Offset"))
                    {
                        limit  = int.Parse(jToken.GetValue("Limit").ToString());
                        offset = int.Parse(jToken.GetValue("Offset").ToString());
                        offset = offset + limit;
                    }
                }

                var sqlScript = GetSqlScript(options, true);
                var sets      = adapter.Query(sqlScript, new
                {
                    Limit  = limit,
                    Offset = offset
                });
                var set     = sets.FirstOrDefault();
                var results = set?.Rows?.Select(r =>
                {
                    var jObj = JObject.FromObject(r);
                    jObj.Remove("RowNum");
                    return(jObj.ToObject(typeof(object)));
                });
                return(new PullResult
                {
                    Status = results?.Count() > 0 ? PullState.HasData : PullState.Invalid,
                    LastToken = new
                    {
                        Limit = limit,
                        Offset = offset
                    },
                    Data = results
                });
            }
        }
Exemple #3
0
        public override PullResult PullNext(object lastToken = null)
        {
            var options = EntityRepository.LoadOptions(EntityModel.Id.ToString());
            var limit   = options.GetValue("puller_page_limit", 100);
            var offset  = 0;

            if (lastToken != null)
            {
                var jToken = JObject.FromObject(lastToken);
                if (jToken != null && jToken.ContainsKey("limit") && jToken.ContainsKey("offset"))
                {
                    limit  = int.Parse(jToken.GetValue("limit").ToString());
                    offset = int.Parse(jToken.GetValue("offset").ToString());
                    offset = offset + limit;
                }
            }

            var sqlScript = GetSqlScript(options, true);
            var sets      = adapter.Query(sqlScript, new
            {
                Limit  = limit,
                Offset = offset
            });
            var set     = sets.FirstOrDefault();
            var results = set?.Rows;

            return(new PullResult
            {
                Status = results?.Count() > 0 ? PullState.HasData : PullState.Invalid,
                LastToken = new
                {
                    Limit = limit,
                    Offset = offset
                },
                Data = results
            });
        }