apply review suggestions

This commit is contained in:
Tamo 2023-02-20 14:53:37 +01:00
parent e79f6f87f6
commit 1479050f7a
2 changed files with 8 additions and 6 deletions

View File

@ -19,7 +19,7 @@ type Result<T> = std::result::Result<T, DocumentFormatError>;
pub enum PayloadType { pub enum PayloadType {
Ndjson, Ndjson,
Json, Json,
Csv(u8), Csv { delimiter: u8 },
} }
impl fmt::Display for PayloadType { impl fmt::Display for PayloadType {
@ -27,7 +27,7 @@ impl fmt::Display for PayloadType {
match self { match self {
PayloadType::Ndjson => f.write_str("ndjson"), PayloadType::Ndjson => f.write_str("ndjson"),
PayloadType::Json => f.write_str("json"), PayloadType::Json => f.write_str("json"),
PayloadType::Csv(_) => f.write_str("csv"), PayloadType::Csv { .. } => f.write_str("csv"),
} }
} }
} }
@ -109,7 +109,7 @@ pub fn read_csv(file: &File, writer: impl Write + Seek, delimiter: u8) -> Result
let mut builder = DocumentsBatchBuilder::new(writer); let mut builder = DocumentsBatchBuilder::new(writer);
let mmap = unsafe { MmapOptions::new().map(file)? }; let mmap = unsafe { MmapOptions::new().map(file)? };
let csv = csv::ReaderBuilder::new().delimiter(delimiter).from_reader(mmap.as_ref()); let csv = csv::ReaderBuilder::new().delimiter(delimiter).from_reader(mmap.as_ref());
builder.append_csv(csv).map_err(|e| (PayloadType::Csv(delimiter), e))?; builder.append_csv(csv).map_err(|e| (PayloadType::Csv { delimiter }, e))?;
let count = builder.documents_count(); let count = builder.documents_count();
let _ = builder.into_inner().map_err(DocumentFormatError::Io)?; let _ = builder.into_inner().map_err(DocumentFormatError::Io)?;

View File

@ -256,8 +256,8 @@ async fn document_addition(
) { ) {
(Some(("application", "json")), None) => PayloadType::Json, (Some(("application", "json")), None) => PayloadType::Json,
(Some(("application", "x-ndjson")), None) => PayloadType::Ndjson, (Some(("application", "x-ndjson")), None) => PayloadType::Ndjson,
(Some(("text", "csv")), None) => PayloadType::Csv(b','), (Some(("text", "csv")), None) => PayloadType::Csv { delimiter: b',' },
(Some(("text", "csv")), Some(delimiter)) => PayloadType::Csv(delimiter), (Some(("text", "csv")), Some(delimiter)) => PayloadType::Csv { delimiter },
(Some(("application", "json")), Some(_)) => { (Some(("application", "json")), Some(_)) => {
return Err(MeilisearchHttpError::CsvDelimiterWithWrongContentType(String::from( return Err(MeilisearchHttpError::CsvDelimiterWithWrongContentType(String::from(
@ -320,7 +320,9 @@ async fn document_addition(
let documents_count = tokio::task::spawn_blocking(move || { let documents_count = tokio::task::spawn_blocking(move || {
let documents_count = match format { let documents_count = match format {
PayloadType::Json => read_json(&read_file, update_file.as_file_mut())?, PayloadType::Json => read_json(&read_file, update_file.as_file_mut())?,
PayloadType::Csv(delim) => read_csv(&read_file, update_file.as_file_mut(), delim)?, PayloadType::Csv { delimiter } => {
read_csv(&read_file, update_file.as_file_mut(), delimiter)?
}
PayloadType::Ndjson => read_ndjson(&read_file, update_file.as_file_mut())?, PayloadType::Ndjson => read_ndjson(&read_file, update_file.as_file_mut())?,
}; };
// we NEED to persist the file here because we moved the `udpate_file` in another task. // we NEED to persist the file here because we moved the `udpate_file` in another task.