@@ -587,6 +587,7 @@ impl Index {
587
587
/// { "id": 2, "body": "catto" }"#.as_bytes(),
588
588
/// "application/x-ndjson",
589
589
/// Some("id"),
590
+ /// None
590
591
/// ).await.unwrap();
591
592
/// // Meilisearch may take some time to execute the request so we are going to wait till it's completed
592
593
/// client.wait_for_task(task, None, None).await.unwrap();
@@ -604,15 +605,16 @@ impl Index {
604
605
payload : T ,
605
606
content_type : & str ,
606
607
primary_key : Option < & str > ,
608
+ csv_delimiter : Option < & str > ,
607
609
) -> Result < TaskInfo , Error > {
608
- let url = if let Some ( primary_key ) = primary_key {
609
- format ! (
610
- "{}/indexes/{}/documents? primaryKey={}" ,
611
- self . client . host , self . uid , primary_key
612
- )
613
- } else {
614
- format ! ( "{}/indexes/{}/documents " , self . client . host , self . uid )
615
- } ;
610
+ let mut url = format ! ( "{}/indexes/{}/documents?" , self . client . host , self . uid ) ;
611
+ if let Some ( primary_key ) = primary_key {
612
+ url = format ! ( "{}primaryKey={}&" , url , primary_key )
613
+ }
614
+
615
+ if let Some ( csv_delimiter ) = csv_delimiter {
616
+ url = format ! ( "{}csvDelimiter={} " , url , csv_delimiter )
617
+ }
616
618
stream_request :: < ( ) , T , TaskInfo > (
617
619
& url,
618
620
& self . client . api_key ,
@@ -736,13 +738,14 @@ impl Index {
736
738
/// # let MEILISEARCH_API_KEY = option_env!("MEILISEARCH_API_KEY").unwrap_or("masterKey");
737
739
/// # futures::executor::block_on(async move {
738
740
/// let client = Client::new(MEILISEARCH_URL, MEILISEARCH_API_KEY);
739
- /// let movie_index = client.index("add_or_replace_unchecked_payload ");
741
+ /// let movie_index = client.index("add_or_update_unchecked_payload ");
740
742
///
741
743
/// let task = movie_index.add_or_update_unchecked_payload(
742
744
/// r#"{ "id": 1, "body": "doggo" }
743
745
/// { "id": 2, "body": "catto" }"#.as_bytes(),
744
746
/// "application/x-ndjson",
745
747
/// Some("id"),
748
+ /// None
746
749
/// ).await.unwrap();
747
750
/// // Meilisearch may take some time to execute the request so we are going to wait till it's completed
748
751
/// client.wait_for_task(task, None, None).await.unwrap();
@@ -760,15 +763,18 @@ impl Index {
760
763
payload : T ,
761
764
content_type : & str ,
762
765
primary_key : Option < & str > ,
766
+ csv_delimiter : Option < & str > ,
763
767
) -> Result < TaskInfo , Error > {
764
- let url = if let Some ( primary_key) = primary_key {
765
- format ! (
766
- "{}/indexes/{}/documents?primaryKey={}" ,
767
- self . client. host, self . uid, primary_key
768
- )
769
- } else {
770
- format ! ( "{}/indexes/{}/documents" , self . client. host, self . uid)
771
- } ;
768
+ let mut url = format ! ( "{}/indexes/{}/documents?" , self . client. host, self . uid) ;
769
+
770
+ if let Some ( primary_key) = primary_key {
771
+ url = format ! ( "{}primaryKey={}&" , url, primary_key)
772
+ }
773
+
774
+ if let Some ( csv_delimiter) = csv_delimiter {
775
+ url = format ! ( "{}csvDelimiter={}" , url, csv_delimiter)
776
+ }
777
+
772
778
stream_request :: < ( ) , T , TaskInfo > (
773
779
& url,
774
780
& self . client . api_key ,
@@ -1779,6 +1785,36 @@ mod tests {
1779
1785
assert_eq ! ( res. offset, 2 ) ;
1780
1786
}
1781
1787
1788
+ #[ meilisearch_test]
1789
+ async fn test_add_documents_in_csv_with_custom_delimiter (
1790
+ client : Client ,
1791
+ index : Index ,
1792
+ ) -> Result < ( ) , Error > {
1793
+ #[ derive( Serialize , Deserialize , Debug ) ]
1794
+ struct Movie {
1795
+ name : String ,
1796
+ description : String ,
1797
+ }
1798
+
1799
+ let task = index
1800
+ . add_or_replace_unchecked_payload (
1801
+ r#"name;description
1802
+ wonderwoman;She's incredible"#
1803
+ . as_bytes ( ) ,
1804
+ "text/csv" ,
1805
+ Some ( "name" ) ,
1806
+ Some ( ";" ) ,
1807
+ )
1808
+ . await
1809
+ . unwrap ( ) ;
1810
+
1811
+ client. wait_for_task ( task, None , None ) . await . unwrap ( ) ;
1812
+ let movies = index. get_documents :: < Movie > ( ) . await . unwrap ( ) ;
1813
+
1814
+ assert_eq ! ( movies. results. len( ) , 1 ) ;
1815
+ Ok ( ( ) )
1816
+ }
1817
+
1782
1818
#[ meilisearch_test]
1783
1819
async fn test_get_one_task ( client : Client , index : Index ) -> Result < ( ) , Error > {
1784
1820
let task = index
0 commit comments