private void IndexAllGetData(long start, long step, string idColumn, string tenantIdColumn, string lastModifiedColumn, DateTime lastIndexed) { List <Wrapper> data; var dataQuery = new SqlQuery(Wrapper.Table + " " + Alias) .Select(Wrapper.GetColumnNames(Alias)) .Where(Exp.Between(idColumn, start, start + step)); if (!string.IsNullOrEmpty(tenantIdColumn)) { dataQuery.InnerJoin("tenants_tenants t", Exp.EqColumns(tenantIdColumn, "t.id")) .Where("t.status", (int)TenantStatus.Active); } foreach (var con in Wrapper.GetConditions(Alias)) { dataQuery.Where(con.Key, con.Value); } AddJoins(Wrapper, dataQuery, Alias); if (!DateTime.MinValue.Equals(lastIndexed)) { dataQuery.Where(Exp.Gt(lastModifiedColumn, lastIndexed)); } using (var db = new DbManager("default", 1800000)) { db.ExecuteNonQuery("SET SESSION group_concat_max_len = 4294967295;"); data = db.ExecuteList(dataQuery).ConvertAll(Wrapper.GetDataConverter()); } try { FactoryIndexer <T> .Index(data.Cast <T>().ToList()); } catch (Exception e) { Logger.Error(e); throw; } }
private List <T> GetDataFromDb(long start, long stop, DateTime lastIndexed) { var idColumn = Wrapper.GetColumnName(ColumnTypeEnum.Id, Alias); List <object[]> data; var dataQuery = GetBaseQuery(lastIndexed) .Select(Wrapper.GetColumnNames(Alias)) .Where(Exp.Between(idColumn, start, stop)); AddJoins(Wrapper, dataQuery, Alias); using (var db = DbManager.FromHttpContext("default", 1800000)) { db.ExecuteNonQuery("SET SESSION group_concat_max_len = 4294967295;"); data = db.ExecuteList(dataQuery); } var converter = Wrapper.GetDataConverter(); return(data.Select(r => (T)converter(r)).ToList()); }