@@ -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" ) ]
6679pub 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
150194async fn get_stream_metadata ( stream : String , tenant_id : & Option < String > ) -> StreamMetadataResponse {
0 commit comments