mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-12-02 01:55:03 +08:00
add mocker to IndexResolver
This commit is contained in:
parent
b9b32d65a8
commit
fbba67fbe9
@ -571,6 +571,105 @@ mod test {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub enum MockIndexResolver<U, I> {
|
||||||
|
Real(super::real::IndexResolver<U, I>),
|
||||||
|
Mock(Mocker),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MockIndexResolver<HeedMetaStore, MapIndexStore> {
|
||||||
|
pub fn load_dump(
|
||||||
|
src: impl AsRef<Path>,
|
||||||
|
dst: impl AsRef<Path>,
|
||||||
|
index_db_size: usize,
|
||||||
|
env: Arc<Env>,
|
||||||
|
indexer_opts: &IndexerOpts,
|
||||||
|
) -> anyhow::Result<()> {
|
||||||
|
super::real::IndexResolver::load_dump(src, dst, index_db_size, env, indexer_opts)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<U, I> MockIndexResolver<U, I>
|
||||||
|
where
|
||||||
|
U: IndexMetaStore,
|
||||||
|
I: IndexStore,
|
||||||
|
{
|
||||||
|
pub fn new(index_uuid_store: U, index_store: I, file_store: UpdateFileStore) -> Self {
|
||||||
|
Self::Real(super::real::IndexResolver {
|
||||||
|
index_uuid_store,
|
||||||
|
index_store,
|
||||||
|
file_store,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn mock(mocker: Mocker) -> Self {
|
||||||
|
Self::Mock(mocker)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn process_document_addition_batch(&self, tasks: Vec<Task>) -> Vec<Task> {
|
||||||
|
match self {
|
||||||
|
IndexResolver::Real(r) => r.process_document_addition_batch(tasks).await,
|
||||||
|
IndexResolver::Mock(_) => todo!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn process_task(&self, task: &Task) -> Result<TaskResult> {
|
||||||
|
match self {
|
||||||
|
IndexResolver::Real(r) => r.process_task(task).await,
|
||||||
|
IndexResolver::Mock(_) => todo!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn dump(&self, path: impl AsRef<Path>) -> Result<()> {
|
||||||
|
match self {
|
||||||
|
IndexResolver::Real(r) => r.dump(path).await,
|
||||||
|
IndexResolver::Mock(_) => todo!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get or create an index with name `uid`.
|
||||||
|
pub async fn get_or_create_index(&self, uid: IndexUid, task_id: TaskId) -> Result<Index> {
|
||||||
|
match self {
|
||||||
|
IndexResolver::Real(r) => r.get_or_create_index(uid, task_id).await,
|
||||||
|
IndexResolver::Mock(_) => todo!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn list(&self) -> Result<Vec<(String, Index)>> {
|
||||||
|
match self {
|
||||||
|
IndexResolver::Real(r) => r.list().await,
|
||||||
|
IndexResolver::Mock(_) => todo!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn delete_index(&self, uid: String) -> Result<Index> {
|
||||||
|
match self {
|
||||||
|
IndexResolver::Real(r) => r.delete_index(uid).await,
|
||||||
|
IndexResolver::Mock(_) => todo!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_index(&self, uid: String) -> Result<Index> {
|
||||||
|
match self {
|
||||||
|
IndexResolver::Real(r) => r.get_index(uid).await,
|
||||||
|
IndexResolver::Mock(_) => todo!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_index_creation_task_id(&self, index_uid: String) -> Result<TaskId> {
|
||||||
|
match self {
|
||||||
|
IndexResolver::Real(r) => r.get_index_creation_task_id(index_uid).await,
|
||||||
|
IndexResolver::Mock(_) => todo!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn delete_content_file(&self, content_uuid: Uuid) -> Result<()> {
|
||||||
|
match self {
|
||||||
|
IndexResolver::Real(r) => r.delete_content_file(content_uuid).await,
|
||||||
|
IndexResolver::Mock(_) => todo!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: ignoring this test, it has become too complex to maintain, and rather implement
|
// TODO: ignoring this test, it has become too complex to maintain, and rather implement
|
||||||
// handler logic test.
|
// handler logic test.
|
||||||
// proptest! {
|
// proptest! {
|
||||||
|
Loading…
Reference in New Issue
Block a user