scouter_sql/sql/
query.rs

1//constants
2
3// spc
4const INSERT_DRIFT_RECORD: &str = include_str!("scripts/spc/insert_spc_drift_record.sql");
5const GET_SPC_FEATURES: &str = include_str!("scripts/spc/unique_spc_features.sql");
6const GET_BINNED_SPC_FEATURE_VALUES: &str =
7    include_str!("scripts/spc/binned_spc_feature_values.sql");
8const GET_SPC_FEATURE_VALUES: &str = include_str!("scripts/spc/get_spc_feature_values.sql");
9const GET_SPC_ENTITIES: &str = include_str!("scripts/spc/get_spc_entities_for_archive.sql");
10const GET_SPC_DATA_FOR_ARCHIVE: &str = include_str!("scripts/spc/get_spc_data_for_archive.sql");
11const UPDATE_SPC_ENTITIES: &str = include_str!("scripts/spc/update_data_to_archived.sql");
12
13// psi
14const INSERT_BIN_COUNTS: &str = include_str!("scripts/psi/insert_bin_counts.sql");
15const GET_BINNED_PSI_FEATURE_BINS: &str =
16    include_str!("scripts/psi/binned_psi_feature_bin_proportions.sql");
17const GET_FEATURE_BIN_PROPORTIONS: &str =
18    include_str!("scripts/psi/get_feature_bin_proportions.sql");
19const GET_BIN_COUNT_ENTITIES: &str =
20    include_str!("scripts/psi/get_bin_count_entities_for_archive.sql");
21const GET_BIN_COUNT_DATA_FOR_ARCHIVE: &str =
22    include_str!("scripts/psi/get_bin_count_data_for_archive.sql");
23const UPDATE_BIN_COUNT_ENTITIES: &str = include_str!("scripts/psi/update_data_to_archived.sql");
24
25// custom
26const GET_BINNED_CUSTOM_METRIC_VALUES: &str =
27    include_str!("scripts/custom/binned_custom_metric_values.sql");
28const GET_CUSTOM_METRIC_VALUES: &str = include_str!("scripts/custom/get_custom_metric_values.sql");
29const INSERT_CUSTOM_METRIC_VALUES: &str =
30    include_str!("scripts/custom/insert_custom_metric_values.sql");
31const GET_CUSTOM_ENTITIES: &str =
32    include_str!("scripts/custom/get_custom_metric_entities_for_archive.sql");
33const GET_CUSTOM_DATA_FOR_ARCHIVE: &str =
34    include_str!("scripts/custom/get_custom_metric_data_for_archive.sql");
35const UPDATE_CUSTOM_ENTITIES: &str = include_str!("scripts/custom/update_data_to_archived.sql");
36
37// observability (experimental)
38const GET_BINNED_OBSERVABILITY_METRICS: &str =
39    include_str!("scripts/observability/binned_observability_metrics.sql");
40const INSERT_OBSERVABILITY_RECORD: &str =
41    include_str!("scripts/observability/insert_observability_record.sql");
42
43//profile
44const INSERT_DRIFT_PROFILE: &str = include_str!("scripts/profile/insert_drift_profile.sql");
45const GET_DRIFT_PROFILE: &str = include_str!("scripts/profile/get_drift_profile.sql");
46const UPDATE_DRIFT_PROFILE_RUN_DATES: &str =
47    include_str!("scripts/profile/update_drift_profile_run_dates.sql");
48const UPDATE_DRIFT_PROFILE_STATUS: &str =
49    include_str!("scripts/profile/update_drift_profile_status.sql");
50const UPDATE_DRIFT_PROFILE: &str = include_str!("scripts/profile/update_drift_profile.sql");
51const DEACTIVATE_DRIFT_PROFILES: &str =
52    include_str!("scripts/profile/deactivate_drift_profiles.sql");
53
54// alert
55const INSERT_DRIFT_ALERT: &str = include_str!("scripts/alert/insert_drift_alert.sql");
56const GET_DRIFT_ALERTS: &str = include_str!("scripts/alert/get_drift_alerts.sql");
57const UPDATE_ALERT_STATUS: &str = include_str!("scripts/alert/update_alert_status.sql");
58
59// poll
60const GET_DRIFT_TASK: &str = include_str!("scripts/poll/poll_for_drift_task.sql");
61
62// auth
63const INSERT_USER: &str = include_str!("scripts/user/insert_user.sql");
64const GET_USER: &str = include_str!("scripts/user/get_user.sql");
65const UPDATE_USER: &str = include_str!("scripts/user/update_user.sql");
66const GET_USERS: &str = include_str!("scripts/user/get_users.sql");
67const LAST_ADMIN: &str = include_str!("scripts/user/last_admin.sql");
68const DELETE_USER: &str = include_str!("scripts/user/delete_user.sql");
69
70#[allow(dead_code)]
71pub enum Queries {
72    GetSpcFeatures,
73    InsertDriftRecord,
74    InsertBinCounts,
75    InsertDriftProfile,
76    InsertDriftAlert,
77    InsertObservabilityRecord,
78    GetDriftAlerts,
79    GetBinnedSpcFeatureValues,
80    GetBinnedPsiFeatureBins,
81    GetBinnedCustomMetricValues,
82    GetBinnedObservabilityMetrics,
83    GetSpcFeatureValues,
84    GetDriftTask,
85    GetDriftProfile,
86    UpdateDriftProfileRunDates,
87    UpdateDriftProfileStatus,
88    DeactivateDriftProfiles,
89    UpdateDriftProfile,
90    GetFeatureBinProportions,
91    GetCustomMetricValues,
92    InsertCustomMetricValues,
93
94    // archive
95    // entities
96    GetBinCountEntities,
97    GetCustomEntities,
98    GetSpcEntities,
99
100    // data
101    GetBinCountDataForArchive,
102    GetCustomDataForArchive,
103    GetSpcDataForArchive,
104
105    // update
106    UpdateBinCountEntities,
107    UpdateCustomEntities,
108    UpdateSpcEntities,
109
110    // user
111    InsertUser,
112    GetUser,
113    UpdateUser,
114    GetUsers,
115    LastAdmin,
116    DeleteUser,
117    UpdateAlertStatus,
118}
119
120impl Queries {
121    // TODO: shouldn't we just return the string directly? Not sure if that's true for all db operations, I'm
122    // just noticing it in the few that im working on. (user related queries)
123    pub fn get_query(&self) -> SqlQuery {
124        match self {
125            // load sql file from scripts/insert.sql
126            Queries::GetSpcFeatures => SqlQuery::new(GET_SPC_FEATURES),
127            Queries::InsertDriftRecord => SqlQuery::new(INSERT_DRIFT_RECORD),
128            Queries::GetBinnedSpcFeatureValues => SqlQuery::new(GET_BINNED_SPC_FEATURE_VALUES),
129            Queries::GetBinnedPsiFeatureBins => SqlQuery::new(GET_BINNED_PSI_FEATURE_BINS),
130            Queries::GetBinnedCustomMetricValues => SqlQuery::new(GET_BINNED_CUSTOM_METRIC_VALUES),
131            Queries::GetBinnedObservabilityMetrics => {
132                SqlQuery::new(GET_BINNED_OBSERVABILITY_METRICS)
133            }
134            Queries::GetSpcFeatureValues => SqlQuery::new(GET_SPC_FEATURE_VALUES),
135            Queries::InsertDriftProfile => SqlQuery::new(INSERT_DRIFT_PROFILE),
136            Queries::InsertDriftAlert => SqlQuery::new(INSERT_DRIFT_ALERT),
137            Queries::InsertObservabilityRecord => SqlQuery::new(INSERT_OBSERVABILITY_RECORD),
138            Queries::GetDriftAlerts => SqlQuery::new(GET_DRIFT_ALERTS),
139            Queries::GetDriftTask => SqlQuery::new(GET_DRIFT_TASK),
140            Queries::UpdateDriftProfileRunDates => SqlQuery::new(UPDATE_DRIFT_PROFILE_RUN_DATES),
141            Queries::UpdateDriftProfileStatus => SqlQuery::new(UPDATE_DRIFT_PROFILE_STATUS),
142            Queries::UpdateDriftProfile => SqlQuery::new(UPDATE_DRIFT_PROFILE),
143            Queries::DeactivateDriftProfiles => SqlQuery::new(DEACTIVATE_DRIFT_PROFILES),
144            Queries::GetDriftProfile => SqlQuery::new(GET_DRIFT_PROFILE),
145            Queries::GetFeatureBinProportions => SqlQuery::new(GET_FEATURE_BIN_PROPORTIONS),
146            Queries::InsertBinCounts => SqlQuery::new(INSERT_BIN_COUNTS),
147            Queries::GetCustomMetricValues => SqlQuery::new(GET_CUSTOM_METRIC_VALUES),
148            Queries::InsertCustomMetricValues => SqlQuery::new(INSERT_CUSTOM_METRIC_VALUES),
149            Queries::GetBinCountEntities => SqlQuery::new(GET_BIN_COUNT_ENTITIES),
150            Queries::GetCustomEntities => SqlQuery::new(GET_CUSTOM_ENTITIES),
151            Queries::GetSpcEntities => SqlQuery::new(GET_SPC_ENTITIES),
152            Queries::GetBinCountDataForArchive => SqlQuery::new(GET_BIN_COUNT_DATA_FOR_ARCHIVE),
153            Queries::GetCustomDataForArchive => SqlQuery::new(GET_CUSTOM_DATA_FOR_ARCHIVE),
154            Queries::GetSpcDataForArchive => SqlQuery::new(GET_SPC_DATA_FOR_ARCHIVE),
155            Queries::UpdateBinCountEntities => SqlQuery::new(UPDATE_BIN_COUNT_ENTITIES),
156            Queries::UpdateCustomEntities => SqlQuery::new(UPDATE_CUSTOM_ENTITIES),
157            Queries::UpdateSpcEntities => SqlQuery::new(UPDATE_SPC_ENTITIES),
158
159            Queries::InsertUser => SqlQuery::new(INSERT_USER),
160            Queries::GetUser => SqlQuery::new(GET_USER),
161            Queries::UpdateUser => SqlQuery::new(UPDATE_USER),
162            Queries::GetUsers => SqlQuery::new(GET_USERS),
163            Queries::LastAdmin => SqlQuery::new(LAST_ADMIN),
164            Queries::DeleteUser => SqlQuery::new(DELETE_USER),
165            Queries::UpdateAlertStatus => SqlQuery::new(UPDATE_ALERT_STATUS),
166        }
167    }
168}
169
170pub struct SqlQuery {
171    pub sql: String,
172}
173
174impl SqlQuery {
175    fn new(sql: &str) -> Self {
176        Self {
177            sql: sql.to_string(),
178        }
179    }
180}