Skip to content

Commit a0b1136

Browse files
add checklist to home api (#1811)
1 parent 76db627 commit a0b1136

1 file changed

Lines changed: 47 additions & 3 deletions

File tree

‎src/prism/home/mod.rs‎

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,12 @@ use crate::{
2626
event::format::{LogSource, LogSourceEntry},
2727
handlers::{DatasetTag, TelemetryType, http::logstream::error::StreamError},
2828
metastore::MetastoreError,
29-
parseable::PARSEABLE,
30-
rbac::{Users, map::SessionKey, role::Action},
29+
parseable::{DEFAULT_TENANT, PARSEABLE},
30+
rbac::{
31+
Users,
32+
map::{SessionKey, users},
33+
role::Action,
34+
},
3135
storage::{ObjectStorageError, ObjectStoreFormat, StreamType},
3236
users::{dashboards::DASHBOARDS, filters::FILTERS},
3337
utils::get_tenant_id_from_key,
@@ -61,10 +65,20 @@ pub struct DataSet {
6165
labels: Vec<String>,
6266
}
6367

68+
#[derive(Debug, Default, Serialize)]
69+
#[serde(rename_all = "camelCase")]
70+
pub struct Checklist {
71+
pub data_ingested: bool,
72+
pub keystone_created: bool,
73+
pub alert_created: bool,
74+
pub user_added: bool,
75+
}
76+
6477
#[derive(Debug, Serialize)]
6578
#[serde(rename_all = "camelCase")]
6679
pub struct HomeResponse {
6780
pub datasets: Vec<DataSet>,
81+
pub checklist: Checklist,
6882
}
6983

7084
#[derive(Debug, Serialize)]
@@ -144,7 +158,37 @@ pub async fn generate_home_response(
144158
}
145159
}
146160

147-
Ok(HomeResponse { datasets })
161+
let data_ingested = datasets.iter().any(|dataset| dataset.ingestion);
162+
let user_count = users()
163+
.get(tenant_id.as_deref().unwrap_or(DEFAULT_TENANT))
164+
.map(|users| {
165+
users
166+
.values()
167+
.filter(|user| !user.protected && !user.is_api_key())
168+
.count()
169+
})
170+
.unwrap_or(0);
171+
let alert_created = {
172+
let guard = ALERTS.read().await;
173+
if let Some(alerts) = guard.as_ref() {
174+
!alerts
175+
.list_alerts_for_user(key.clone(), vec![])
176+
.await?
177+
.is_empty()
178+
} else {
179+
false
180+
}
181+
};
182+
183+
Ok(HomeResponse {
184+
datasets,
185+
checklist: Checklist {
186+
data_ingested,
187+
keystone_created: false,
188+
alert_created,
189+
user_added: user_count > 1,
190+
},
191+
})
148192
}
149193

150194
async fn get_stream_metadata(stream: String, tenant_id: &Option<String>) -> StreamMetadataResponse {

0 commit comments

Comments
 (0)