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