scouter_server/sql/
schema.rs

1use chrono::NaiveDateTime;
2use serde::{Deserialize, Serialize};
3use std::collections::BTreeMap;
4use std::collections::HashMap;
5
6#[derive(Serialize, Deserialize, Debug, Clone)]
7pub struct DriftRecord {
8    pub created_at: NaiveDateTime,
9    pub name: String,
10    pub repository: String,
11    pub version: String,
12    pub feature: String,
13    pub value: f64,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct FeatureResult {
18    pub created_at: Vec<chrono::NaiveDateTime>,
19    pub values: Vec<f64>,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct QueryResult {
24    pub features: BTreeMap<String, FeatureResult>,
25}
26
27#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
28pub struct ProcessAlertRule {
29    pub rule: String,
30}
31
32#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
33pub struct PercentageAlertRule {
34    pub rule: f64,
35}
36
37#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
38pub struct AlertRule {
39    pub control: Option<ProcessAlertRule>,
40
41    pub percentage: Option<PercentageAlertRule>,
42}
43
44#[derive(Debug, Serialize, Deserialize, Clone)]
45pub struct MonitorConfig {
46    pub sample_size: usize,
47
48    pub sample: bool,
49
50    pub name: String,
51
52    pub repository: String,
53
54    pub version: String,
55
56    pub alert_rule: AlertRule,
57
58    pub cron: String,
59}
60
61#[derive(Debug, Serialize, Deserialize, Clone)]
62pub struct FeatureMonitorProfile {
63    pub id: String,
64
65    pub center: f64,
66
67    pub one_ucl: f64,
68
69    pub one_lcl: f64,
70
71    pub two_ucl: f64,
72
73    pub two_lcl: f64,
74
75    pub three_ucl: f64,
76
77    pub three_lcl: f64,
78
79    pub timestamp: String,
80}
81
82#[derive(Debug, Serialize, Deserialize, Clone)]
83pub struct MonitorProfile {
84    pub features: HashMap<String, FeatureMonitorProfile>,
85
86    pub config: MonitorConfig,
87}