public LogItem[] GetItems( NpgsqlConnection connection, CriteriaType criteriaType, DateTime criteria, int maxCount, bool includeBytes) { IWhereOp whereOp; bool asc; switch (criteriaType) { case CriteriaType.DownFromInfinity: whereOp = null; asc = false; break; case CriteriaType.DownFrom: whereOp = new Lt(DbStr.Time, criteria.Ticks); asc = false; break; case CriteriaType.DownFromOrEqual: whereOp = new Le(DbStr.Time, criteria.Ticks); asc = false; break; case CriteriaType.UpFromInfinity: whereOp = null; asc = true; break; case CriteriaType.UpFrom: whereOp = new Gt(DbStr.Time, criteria.Ticks); asc = true; break; case CriteriaType.UpFromOrEqual: whereOp = new Ge(DbStr.Time, criteria.Ticks); asc = true; break; default: throw new NotSupportedException("CriteriaType " + criteriaType); } var columns = includeBytes ? _columns : _columnsWithoutBytes; var query = _npgQueryHelper.Select( _tableName, columns, whereOp, new[] { DbStr.Time }, asc, Math.Min(maxCount, MaxItemsToRetrieve)); var alarms = _npgHelper.ExecuteReader(connection, query, reader => { var i = new LogItem { Time = reader.GetDateTimeFormTicks(0), Text = reader.GetNullableString(1) }; if (includeBytes) { i.Bytes = reader.GetByteArray(2); } return(i); }); return(asc ? alarms.Reverse().ToArray() : alarms); }
static IValidator Le(object pValue, object pMax, string pFieldName, string pErrorMsg) { IValidator validator = new Le() { Value = pValue, Max = pMax, ErrorMsg = pErrorMsg, FieldName = pFieldName }; return(validator); }
public User[] Get(NpgsqlConnection connection, CriteriaType criteriaType, string name, int count) { IWhereOp whereOp; bool asc; switch (criteriaType) { case CriteriaType.DownFromInfinity: whereOp = null; asc = true; break; case CriteriaType.DownFrom: whereOp = new Gt(DbStr.Name, name); asc = true; break; case CriteriaType.DownFromOrEqual: whereOp = new Ge(DbStr.Name, name); asc = true; break; case CriteriaType.UpFromInfinity: whereOp = null; asc = false; break; case CriteriaType.UpFrom: whereOp = new Lt(DbStr.Name, name); asc = false; break; case CriteriaType.UpFromOrEqual: whereOp = new Le(DbStr.Name, name); asc = false; break; default: throw new NotSupportedException("CriteriaType " + criteriaType); } int limit = Math.Min(count, MaxUsersToRetrieve); NpgQuery query = _npgQueryHelper.Select( DbStr.Users, _userColumns, whereOp, new[] { DbStr.Name }, asc, limit); var users = _npgHelper.ExecuteReader(connection, query, GetUser); return(asc ? users : users.Reverse().ToArray()); }
public Tuple <DateTime, double?[]>[] GetPage(int[] trendTagIds, CriteriaType criteriaType, DateTime criteria, int maxCount) { IWhereOp whereOp; bool asc; switch (criteriaType) { case CriteriaType.DownFromInfinity: whereOp = null; asc = false; break; case CriteriaType.DownFrom: whereOp = new Lt(DbStr.Time, criteria.Ticks); asc = false; break; case CriteriaType.DownFromOrEqual: whereOp = new Le(DbStr.Time, criteria.Ticks); asc = false; break; case CriteriaType.UpFromInfinity: whereOp = null; asc = true; break; case CriteriaType.UpFrom: whereOp = new Gt(DbStr.Time, criteria.Ticks); asc = true; break; case CriteriaType.UpFromOrEqual: whereOp = new Ge(DbStr.Time, criteria.Ticks); asc = true; break; default: throw new NotSupportedException("CriteriaType " + criteriaType); } var columns = new List <string>(trendTagIds.Length + 1) { DbStr.Time }; columns.AddRange(trendTagIds.Select(GetColumnName)); var columnsArr = columns.ToArray(); int limit = Math.Min(maxCount, MaxSamplesToRetrieve); var parameters = new List <NpgsqlParameter>(); var queryTexts = new List <string>(); for (var i = 0; i < TrendTableSelector.TablesCount; i++) { string queryText = _npgQueryHelper.Select( parameters, _tableName + "_" + i, columnsArr, whereOp, ColumnsOfTime, asc, limit); queryTexts.Add(queryText); } NpgQuery query = _npgQueryHelper.Union(parameters, queryTexts, ColumnsOfTime, asc, limit); var result = _npgHelper.ExecuteReader(_connection, query, reader => { DateTime time = reader.GetDateTimeFormTicks(0); var values = new double?[columns.Count - 1]; for (var j = 1; j < columns.Count; j++) { values[j - 1] = reader.GetNullableDouble(j); } return(new Tuple <DateTime, double?[]>(time, values)); }); return(asc ? result.Reverse().ToArray() : result); }