@@ -33,7 +33,10 @@ pub enum TaskType {
33
33
details : Option < DumpCreation > ,
34
34
} ,
35
35
TaskCancelation {
36
- details : Option < DumpCreation > ,
36
+ details : Option < TaskCancelation > ,
37
+ } ,
38
+ TaskDeletion {
39
+ details : Option < TaskDeletion > ,
37
40
} ,
38
41
}
39
42
@@ -87,7 +90,15 @@ pub struct DumpCreation {
87
90
pub struct TaskCancelation {
88
91
pub matched_tasks : usize ,
89
92
pub canceled_tasks : usize ,
90
- pub original_filters : usize ,
93
+ pub original_filters : String ,
94
+ }
95
+
96
+ #[ derive( Debug , Clone , Deserialize ) ]
97
+ #[ serde( rename_all = "camelCase" ) ]
98
+ pub struct TaskDeletion {
99
+ pub matched_tasks : usize ,
100
+ pub deleted_tasks : usize ,
101
+ pub original_filters : String ,
91
102
}
92
103
93
104
#[ derive( Deserialize , Debug , Clone ) ]
@@ -424,8 +435,12 @@ pub struct TasksPaginationFilters {
424
435
#[ derive( Debug , Serialize , Clone ) ]
425
436
pub struct TasksCancelFilters { }
426
437
438
+ #[ derive( Debug , Serialize , Clone ) ]
439
+ pub struct TasksDeleteFilters { }
440
+
427
441
pub type TasksSearchQuery < ' a > = TasksQuery < ' a , TasksPaginationFilters > ;
428
442
pub type TasksCancelQuery < ' a > = TasksQuery < ' a , TasksCancelFilters > ;
443
+ pub type TasksDeleteQuery < ' a > = TasksQuery < ' a , TasksDeleteFilters > ;
429
444
430
445
#[ derive( Debug , Serialize , Clone ) ]
431
446
#[ serde( rename_all = "camelCase" ) ]
@@ -582,6 +597,29 @@ impl<'a> TasksQuery<'a, TasksCancelFilters> {
582
597
}
583
598
}
584
599
600
+ impl < ' a > TasksQuery < ' a , TasksDeleteFilters > {
601
+ pub fn new ( client : & ' a Client ) -> TasksQuery < ' a , TasksDeleteFilters > {
602
+ TasksQuery {
603
+ client,
604
+ index_uids : None ,
605
+ statuses : None ,
606
+ task_types : None ,
607
+ uids : None ,
608
+ before_enqueued_at : None ,
609
+ after_enqueued_at : None ,
610
+ before_started_at : None ,
611
+ after_started_at : None ,
612
+ before_finished_at : None ,
613
+ after_finished_at : None ,
614
+ pagination : TasksDeleteFilters { } ,
615
+ }
616
+ }
617
+
618
+ pub async fn execute ( & ' a self ) -> Result < TaskInfo , Error > {
619
+ self . client . delete_tasks_with ( self ) . await
620
+ }
621
+ }
622
+
585
623
impl < ' a > TasksQuery < ' a , TasksPaginationFilters > {
586
624
pub fn new ( client : & ' a Client ) -> TasksQuery < ' a , TasksPaginationFilters > {
587
625
TasksQuery {
@@ -973,4 +1011,46 @@ mod test {
973
1011
mock_res. assert ( ) ;
974
1012
Ok ( ( ) )
975
1013
}
1014
+
1015
+ #[ meilisearch_test]
1016
+ async fn test_delete_tasks_with_params ( ) -> Result < ( ) , Error > {
1017
+ let mock_server_url = & mockito:: server_url ( ) ;
1018
+ let client = Client :: new ( mock_server_url, "masterKey" ) ;
1019
+ let path = "/tasks?indexUids=movies,test&statuses=equeued&types=documentDeletion&uids=1" ;
1020
+
1021
+ let mock_res = mock ( "DELETE" , path) . with_status ( 200 ) . create ( ) ;
1022
+
1023
+ let mut query = TasksDeleteQuery :: new ( & client) ;
1024
+ query
1025
+ . with_index_uids ( [ "movies" , "test" ] )
1026
+ . with_statuses ( [ "equeued" ] )
1027
+ . with_types ( [ "documentDeletion" ] )
1028
+ . with_uids ( [ & 1 ] ) ;
1029
+
1030
+ let _ = client. delete_tasks_with ( & query) . await ;
1031
+
1032
+ mock_res. assert ( ) ;
1033
+ Ok ( ( ) )
1034
+ }
1035
+
1036
+ #[ meilisearch_test]
1037
+ async fn test_delete_tasks_with_params_execute ( ) -> Result < ( ) , Error > {
1038
+ let mock_server_url = & mockito:: server_url ( ) ;
1039
+ let client = Client :: new ( mock_server_url, "masterKey" ) ;
1040
+ let path = "/tasks?indexUids=movies,test&statuses=equeued&types=documentDeletion&uids=1" ;
1041
+
1042
+ let mock_res = mock ( "DELETE" , path) . with_status ( 200 ) . create ( ) ;
1043
+
1044
+ let mut query = TasksDeleteQuery :: new ( & client) ;
1045
+ let _ = query
1046
+ . with_index_uids ( [ "movies" , "test" ] )
1047
+ . with_statuses ( [ "equeued" ] )
1048
+ . with_types ( [ "documentDeletion" ] )
1049
+ . with_uids ( [ & 1 ] )
1050
+ . execute ( )
1051
+ . await ;
1052
+
1053
+ mock_res. assert ( ) ;
1054
+ Ok ( ( ) )
1055
+ }
976
1056
}
0 commit comments