コード例 #1
0
        public Tuple <long, string>[] GetIds(NpgsqlConnection connection, long minId, long maxId)
        {
            var getRepoUsersIdsQuery = _npgQueryHelper
                                       .Select(DbStr.Users, new [] { DbStr.Id, DbStr.Name }, new And(new Ge(DbStr.Id, minId), new Le(DbStr.Id, maxId)));
            var repoUsersIds = _npgHelper.ExecuteReader(
                connection,
                getRepoUsersIdsQuery,
                reader => new Tuple <long, string>(reader.GetInt64(0), reader.GetString(1)));

            return(repoUsersIds);
        }
コード例 #2
0
ファイル: AlarmsRepository.cs プロジェクト: xxmingming/phmi
        public AlarmSampleId[] GetActiveIds(NpgsqlConnection connection)
        {
            var getActiveQuery = _npgQueryHelper.Select(
                _tableName, new [] { DbStr.StartTime, DbStr.AlarmId }, new IsNull(DbStr.EndTime));
            var activeIds = _npgHelper.ExecuteReader(
                connection,
                getActiveQuery,
                reader => new AlarmSampleId(reader.GetDateTimeFormTicks(0), reader.GetInt32(1)));

            return(activeIds);
        }
コード例 #3
0
ファイル: LogRepository.cs プロジェクト: xxmingming/phmi
        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);
        }
コード例 #4
0
        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();
            var limit      = Math.Min(maxCount, MaxSamplesToRetrieve);
            var parameters = new List <NpgsqlParameter>();
            var queryTexts = new List <string>();

            for (var i = 0; i < TrendTableSelector.TablesCount; i++)
            {
                var queryText = _npgQueryHelper.Select(
                    parameters,
                    _tableName + "_" + i,
                    columnsArr,
                    whereOp,
                    ColumnsOfTime,
                    asc,
                    limit);
                queryTexts.Add(queryText);
            }
            var query  = _npgQueryHelper.Union(parameters, queryTexts, ColumnsOfTime, asc, limit);
            var result = _npgHelper.ExecuteReader(_connection, query, reader =>
            {
                var 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);
        }