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); }
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 }); } }
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 }); }