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
use crate::value::{Value, timestamp_ms};
use std::collections::HashMap;
use crate::metric::Metric;
use nanoid::nanoid;
use crate::types::*;

impl Value {
    pub fn metrics_n(n: usize) -> Self {
        let mut data: Vec<Metric> = Vec::new();
        for _ in 0..n {
            data.push(Metric::new(0.0 as f64));
        }
        Self {
            id:   nanoid!(),
            stamp:  timestamp_ms(),
            dt:   METRICS,
            q:    100.0,
            data: Val::Metrics(data),
            attr: Vec::new(),
            curr: -1,
            tags:   HashMap::new(),
        }
    }
    pub fn metrics() -> Self {
        Value::metrics_n(128)
    }
    pub fn from_metrics(value: Vec<Metric>) -> Self {
        Self {
            id:   nanoid!(),
            stamp:  timestamp_ms(),
            dt:   METRICS,
            q:    100.0,
            data: Val::Metrics(value),
            attr: Vec::new(),
            curr: -1,
            tags:   HashMap::new(),
        }
    }
}