@@ -135,7 +135,7 @@ pub async fn add_change(
135135 VALUES (?, ?, ?, ?, ?, ?, ?, ?) RETURNING id" )
136136 . bind ( & change. source )
137137 . bind ( & change. data_type )
138- . bind ( & change. data_id )
138+ . bind ( change. data_id )
139139 . bind ( & change. data )
140140 . bind ( & change. note )
141141 . bind ( & change. user_id )
@@ -147,14 +147,21 @@ pub async fn add_change(
147147 Ok ( id. 0 )
148148}
149149
150- #[ get( "/event/<event_id>/changes?<from_id>" ) ]
151- async fn get_changes ( event_id : EventId , from_id : Option < i64 > , session_id : MaybeSessionId , state : & State < SharedQxState > , gdb : & State < DbPool > ) -> Result < Template , Custom < String > > {
150+ #[ get( "/event/<event_id>/changes?<from_id>&<limit>" ) ]
151+ async fn get_changes (
152+ event_id : EventId ,
153+ from_id : Option < i64 > ,
154+ limit : Option < i64 > ,
155+ session_id : MaybeSessionId ,
156+ state : & State < SharedQxState > ,
157+ gdb : & State < DbPool >
158+ ) -> Result < Template , Custom < String > > {
152159 let event = load_event_info ( event_id, gdb) . await ?;
153160 let user = user_info_opt ( session_id. 0 . as_ref ( ) , state) . await . map_err ( anyhow_to_custom_error) ?;
154- let from_id = from_id. unwrap_or ( 0 ) ;
155161 let edb = get_event_db ( event_id, state) . await . map_err ( anyhow_to_custom_error) ?;
156- let records: Vec < ChangesRecord > = sqlx:: query_as ( "SELECT * FROM changes WHERE id>=? ORDER BY created DESC LIMIT 1000" )
157- . bind ( from_id)
162+ let records: Vec < ChangesRecord > = sqlx:: query_as ( "SELECT * FROM changes WHERE id>=? ORDER BY created DESC LIMIT ?" )
163+ . bind ( from_id. unwrap_or ( 0 ) )
164+ . bind ( limit. unwrap_or ( 100 ) )
158165 . fetch_all ( & edb)
159166 . await
160167 . map_err ( sqlx_to_custom_error) ?;
@@ -192,10 +199,10 @@ pub async fn add_run_update_request_change(
192199 note : Option < & str > ,
193200 data : Json < RunsRecord > ,
194201 state : & State < SharedQxState >
195- ) -> Result < ( ) , Custom < String > > {
202+ ) -> Result < Json < i64 > , Custom < String > > {
196203 let user = user_info ( & session_id, state) . await ?;
197204 let data = ChangeData :: RunUpdateRequest ( data. into_inner ( ) ) ;
198- add_change ( event_id, ChangesRecord {
205+ let change_id = add_change ( event_id, ChangesRecord {
199206 id : 0 ,
200207 source : "www" . to_string ( ) ,
201208 data_type : DataType :: RunUpdateRequest ,
@@ -207,7 +214,7 @@ pub async fn add_run_update_request_change(
207214 note : note. map ( |s| s. to_string ( ) ) ,
208215 } , state) . await . map_err ( anyhow_to_custom_error) ?;
209216 //state.read().await.broadcast_runs_change((event_id, data_id, data)).await.map_err(anyhow_to_custom_error)?;
210- Ok ( ( ) )
217+ Ok ( Json ( change_id ) )
211218}
212219
213220#[ post( "/api/event/current/changes/run-updated?<run_id>" , data = "<change>" ) ]
@@ -326,8 +333,15 @@ async fn changes_sse(event_id: EventId, state: &State<SharedQxState>) -> EventSt
326333 }
327334}
328335
329- #[ get( "/api/event/<event_id>/changes?<from_id>&<data_type>&<status>" ) ]
330- async fn api_changes_get ( event_id : EventId , from_id : Option < i64 > , data_type : Option < & str > , status : Option < & str > , state : & State < SharedQxState > ) -> Result < Json < Vec < ChangesRecord > > , Custom < String > > {
336+ #[ get( "/api/event/<event_id>/changes?<from_id>&<limit>&<data_type>&<status>" ) ]
337+ async fn api_changes_get (
338+ event_id : EventId ,
339+ from_id : Option < i64 > ,
340+ limit : Option < i64 > ,
341+ data_type : Option < & str > ,
342+ status : Option < & str > ,
343+ state : & State < SharedQxState >
344+ ) -> Result < Json < Vec < ChangesRecord > > , Custom < String > > {
331345 let edb = get_event_db ( event_id, state) . await . map_err ( anyhow_to_custom_error) ?;
332346
333347 let mut query_builder = QueryBuilder :: new ( "SELECT * FROM changes WHERE id>=" ) ;
@@ -341,7 +355,11 @@ async fn api_changes_get(event_id: EventId, from_id: Option<i64>, data_type: Opt
341355 query_builder. push_bind ( status) ;
342356 }
343357 query_builder. push ( " ORDER BY created" ) ;
344-
358+ if let Some ( limit) = limit {
359+ query_builder. push ( " LIMIT " ) ;
360+ query_builder. push_bind ( limit) ;
361+ }
362+
345363 let query = query_builder. build_query_as :: < ChangesRecord > ( ) ;
346364 let records: Vec < _ > = query. fetch_all ( & edb) . await . map_err ( sqlx_to_custom_error) ?;
347365 // info!("records: {:?}", records);
0 commit comments