private Tuple <long, long, long> Count(string idColumn, string tenantIdColumn, string lastModifiedColumn, DateTime lastIndexed) { using (var db = new DbManager("default", 1800000)) { var dataQuery = new SqlQuery(Wrapper.Table + " " + Alias) .SelectCount() .SelectMax(idColumn) .SelectMin(idColumn); if (!string.IsNullOrEmpty(tenantIdColumn)) { dataQuery.InnerJoin("tenants_tenants t", Exp.EqColumns(tenantIdColumn, "t.id")) .Where("t.status", TenantStatus.Active); } Wrapper.AddConditions(Alias, dataQuery); if (!DateTime.MinValue.Equals(lastIndexed)) { dataQuery.Where(Exp.Gt(lastModifiedColumn, lastIndexed)); } try { var data = db.ExecuteList(dataQuery).ConvertAll(r => new Tuple <long, long, long>(Convert.ToInt64(r[0]), Convert.ToInt64(r[1]), Convert.ToInt64(r[2]))); return(data.FirstOrDefault()); } catch (Exception e) { Logger.Error(e); throw; } } }
private SqlQuery GetBaseQuery(DateTime lastIndexed) { var dataQuery = new SqlQuery(Wrapper.Table + " " + Alias); var tenantIdColumn = Wrapper.GetColumnName(ColumnTypeEnum.TenantId, Alias); var lastModifiedColumn = Wrapper.GetColumnName(ColumnTypeEnum.LastModified, Alias); if (!string.IsNullOrEmpty(tenantIdColumn)) { dataQuery.InnerJoin("tenants_tenants t", Exp.EqColumns(tenantIdColumn, "t.id")) .Where("t.status", TenantStatus.Active); } Wrapper.AddConditions(Alias, dataQuery); if (!DateTime.MinValue.Equals(lastIndexed)) { dataQuery.Where(Exp.Gt(lastModifiedColumn, lastIndexed)); } return(dataQuery); }
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); } Wrapper.AddConditions(Alias, dataQuery); 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; } }