rsiot/components/cmp_timescaledb/model/
row.rs

1//! Модель строки в БД
2
3use sqlx::{types::time::OffsetDateTime, FromRow};
4
5use super::agg_type::AggType;
6
7/// Модель строки в БД
8#[derive(Debug, FromRow)]
9pub struct Row {
10    /// Метка времени
11    pub time: OffsetDateTime,
12    /// Сущность
13    pub entity: String,
14    /// Атрибут
15    pub attr: String,
16    /// Значение
17    pub value: f64,
18    /// Аггрегация, с помощью которой значение было получено
19    pub agg: AggType,
20    /// Метка времени аггрегации
21    pub aggts: Option<OffsetDateTime>,
22    /// Массив следующих аггрегаций
23    pub aggnext: Vec<AggType>,
24}
25
26impl Row {
27    /// Создать строку в таблице, только entity, attr и value
28    pub fn new_simple(entity: &str, attr: &str, value: f64) -> Self {
29        Self {
30            time: OffsetDateTime::now_utc(),
31            entity: entity.to_string(),
32            attr: attr.to_string(),
33            value,
34            agg: AggType::Curr,
35            aggts: None,
36            aggnext: vec![],
37        }
38    }
39}