[WIP] rebase on main

This commit is contained in:
tamo 2021-05-10 20:22:18 +02:00
parent c4d898a265
commit 0fee81678e
No known key found for this signature in database
GPG Key ID: 20CD8020AFA88D69
4 changed files with 35 additions and 25 deletions

View File

@ -9,6 +9,7 @@ use serde_json::{Map, Value};
use crate::helpers::EnvSizer; use crate::helpers::EnvSizer;
pub use search::{SearchQuery, SearchResult, DEFAULT_SEARCH_LIMIT}; pub use search::{SearchQuery, SearchResult, DEFAULT_SEARCH_LIMIT};
pub use updates::{Facets, Settings, Checked, Unchecked}; pub use updates::{Facets, Settings, Checked, Unchecked};
use serde::{de::Deserializer, Deserialize};
mod search; mod search;
mod updates; mod updates;
@ -26,6 +27,22 @@ impl Deref for Index {
} }
} }
pub fn deserialize_some<'de, T, D>(deserializer: D) -> Result<Option<T>, D::Error>
where
T: Deserialize<'de>,
D: Deserializer<'de>,
{
Deserialize::deserialize(deserializer).map(Some)
}
pub fn deserialize_wildcard<'de, D>(deserializer: D) -> Result<Option<Option<Vec<String>>>, D::Error>
where
D: Deserializer<'de>,
{
Ok(<Option<Vec<String>> as Deserialize>::deserialize(deserializer)?
.map(|item: Vec<String>| (!item.iter().any(|s| s == "*")).then(|| item)))
}
impl Index { impl Index {
pub fn settings(&self) -> anyhow::Result<Settings<Checked>> { pub fn settings(&self) -> anyhow::Result<Settings<Checked>> {
let txn = self.read_txn()?; let txn = self.read_txn()?;
@ -88,6 +105,8 @@ impl Index {
let mut documents = Vec::new(); let mut documents = Vec::new();
println!("fields to display: {:?}", fields_to_display);
for entry in iter { for entry in iter {
let (_id, obkv) = entry?; let (_id, obkv) = entry?;
let object = obkv_to_json(&fields_to_display, &fields_ids_map, obkv)?; let object = obkv_to_json(&fields_to_display, &fields_ids_map, obkv)?;

View File

@ -5,11 +5,17 @@ use std::marker::PhantomData;
use flate2::read::GzDecoder; use flate2::read::GzDecoder;
use log::info; use log::info;
use milli::update::{IndexDocumentsMethod, UpdateBuilder, UpdateFormat}; use milli::update::{DocumentAdditionResult, IndexDocumentsMethod, UpdateBuilder, UpdateFormat};
use serde::{de::Deserializer, Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use super::Index; use super::{deserialize_some, deserialize_wildcard, Index};
use crate::index_controller::UpdateResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum UpdateResult {
DocumentsAddition(DocumentAdditionResult),
DocumentDeletion { deleted: u64 },
Other,
}
#[derive(Clone, Default, Debug)] #[derive(Clone, Default, Debug)]
pub struct Checked; pub struct Checked;
@ -22,14 +28,14 @@ pub struct Unchecked;
pub struct Settings<T> { pub struct Settings<T> {
#[serde( #[serde(
default, default,
deserialize_with = "deserialize_some", deserialize_with = "deserialize_wildcard",
skip_serializing_if = "Option::is_none" skip_serializing_if = "Option::is_none"
)] )]
pub displayed_attributes: Option<Option<Vec<String>>>, pub displayed_attributes: Option<Option<Vec<String>>>,
#[serde( #[serde(
default, default,
deserialize_with = "deserialize_some", deserialize_with = "deserialize_wildcard",
skip_serializing_if = "Option::is_none" skip_serializing_if = "Option::is_none"
)] )]
pub searchable_attributes: Option<Option<Vec<String>>>, pub searchable_attributes: Option<Option<Vec<String>>>,
@ -118,14 +124,6 @@ pub struct Facets {
pub min_level_size: Option<NonZeroUsize>, pub min_level_size: Option<NonZeroUsize>,
} }
fn deserialize_some<'de, T, D>(deserializer: D) -> Result<Option<T>, D::Error>
where
T: Deserialize<'de>,
D: Deserializer<'de>,
{
Deserialize::deserialize(deserializer).map(Some)
}
impl Index { impl Index {
pub fn update_documents( pub fn update_documents(
&self, &self,

View File

@ -19,14 +19,6 @@ use crate::index::Index;
use crate::index_controller::uuid_resolver; use crate::index_controller::uuid_resolver;
use crate::{helpers::compression, index::Settings}; use crate::{helpers::compression, index::Settings};
pub (super) fn deserialize_some<'de, T, D>(deserializer: D) -> Result<Option<T>, D::Error>
where
T: Deserialize<'de>,
D: Deserializer<'de>,
{
Deserialize::deserialize(deserializer).map(Some)
}
#[derive(Debug, Serialize, Deserialize, Copy, Clone)] #[derive(Debug, Serialize, Deserialize, Copy, Clone)]
enum DumpVersion { enum DumpVersion {
V1, V1,

View File

@ -3,6 +3,7 @@ use std::collections::{BTreeMap, BTreeSet};
use log::warn; use log::warn;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::index_controller; use crate::index_controller;
use crate::index::{deserialize_wildcard, deserialize_some};
use super::*; use super::*;
/// This is the settings used in the last version of meilisearch exporting dump in V1 /// This is the settings used in the last version of meilisearch exporting dump in V1
@ -13,10 +14,10 @@ struct Settings {
pub ranking_rules: Option<Option<Vec<String>>>, pub ranking_rules: Option<Option<Vec<String>>>,
#[serde(default, deserialize_with = "deserialize_some")] #[serde(default, deserialize_with = "deserialize_some")]
pub distinct_attribute: Option<Option<String>>, pub distinct_attribute: Option<Option<String>>,
#[serde(default, deserialize_with = "deserialize_some")] #[serde(default, deserialize_with = "deserialize_wildcard")]
pub searchable_attributes: Option<Option<Vec<String>>>, pub searchable_attributes: Option<Option<Vec<String>>>,
#[serde(default, deserialize_with = "deserialize_some")] #[serde(default, deserialize_with = "deserialize_wildcard")]
pub displayed_attributes: Option<Option<BTreeSet<String>>>, pub displayed_attributes: Option<Option<Vec<String>>>,
#[serde(default, deserialize_with = "deserialize_some")] #[serde(default, deserialize_with = "deserialize_some")]
pub stop_words: Option<Option<BTreeSet<String>>>, pub stop_words: Option<Option<BTreeSet<String>>>,
#[serde(default, deserialize_with = "deserialize_some")] #[serde(default, deserialize_with = "deserialize_some")]