-
Notifications
You must be signed in to change notification settings - Fork 1.9k
/
INFO.ts
82 lines (76 loc) · 1.92 KB
/
INFO.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import { TimeSeriesAggregationType, TimeSeriesDuplicatePolicies } from '.';
export const FIRST_KEY_INDEX = 1;
export const IS_READ_ONLY = true;
export function transformArguments(key: string): Array<string> {
return ['TS.INFO', key];
}
export type InfoRawReply = [
'totalSamples',
number,
'memoryUsage',
number,
'firstTimestamp',
number,
'lastTimestamp',
number,
'retentionTime',
number,
'chunkCount',
number,
'chunkSize',
number,
'chunkType',
string,
'duplicatePolicy',
TimeSeriesDuplicatePolicies | null,
'labels',
Array<[name: string, value: string]>,
'sourceKey',
string | null,
'rules',
Array<[key: string, timeBucket: number, aggregationType: TimeSeriesAggregationType]>
];
export interface InfoReply {
totalSamples: number;
memoryUsage: number;
firstTimestamp: number;
lastTimestamp: number;
retentionTime: number;
chunkCount: number;
chunkSize: number;
chunkType: string;
duplicatePolicy: TimeSeriesDuplicatePolicies | null;
labels: Array<{
name: string;
value: string;
}>;
sourceKey: string | null;
rules: Array<{
key: string;
timeBucket: number;
aggregationType: TimeSeriesAggregationType
}>;
}
export function transformReply(reply: InfoRawReply): InfoReply {
return {
totalSamples: reply[1],
memoryUsage: reply[3],
firstTimestamp: reply[5],
lastTimestamp: reply[7],
retentionTime: reply[9],
chunkCount: reply[11],
chunkSize: reply[13],
chunkType: reply[15],
duplicatePolicy: reply[17],
labels: reply[19].map(([name, value]) => ({
name,
value
})),
sourceKey: reply[21],
rules: reply[23].map(([key, timeBucket, aggregationType]) => ({
key,
timeBucket,
aggregationType
}))
};
}