refactor: delete all documents on discard
This commit is contained in:
committed by
Navin Karkera
parent
2efff2697b
commit
140b9bb968
@@ -143,7 +143,7 @@ def _wait_for_meili_task(info: TaskInfo) -> None:
|
||||
raise MeilisearchError(err_reason)
|
||||
|
||||
|
||||
def wait_for_meili_tasks(info_list: list[TaskInfo]) -> None:
|
||||
def _wait_for_meili_tasks(info_list: list[TaskInfo]) -> None:
|
||||
"""
|
||||
Simple helper method to wait for multiple Meilisearch tasks to complete
|
||||
"""
|
||||
@@ -231,7 +231,7 @@ def _recurse_children(block, fn, status_cb: Callable[[str], None] | None = None)
|
||||
fn(child)
|
||||
|
||||
|
||||
def _update_index_docs(docs, wait=True) -> list[TaskInfo]:
|
||||
def _update_index_docs(docs) -> list[TaskInfo]:
|
||||
"""
|
||||
Helper function that updates the documents in the search index
|
||||
|
||||
@@ -249,9 +249,7 @@ def _update_index_docs(docs, wait=True) -> list[TaskInfo]:
|
||||
tasks.append(client.index(current_rebuild_index_name).update_documents(docs))
|
||||
tasks.append(client.index(STUDIO_INDEX_NAME).update_documents(docs))
|
||||
|
||||
if wait:
|
||||
wait_for_meili_tasks(tasks)
|
||||
return tasks
|
||||
_wait_for_meili_tasks(tasks)
|
||||
|
||||
|
||||
def only_if_meilisearch_enabled(f):
|
||||
@@ -466,29 +464,24 @@ def delete_index_doc(usage_key: UsageKey) -> None:
|
||||
tasks.append(client.index(current_rebuild_index_name).delete_document(meili_id_from_opaque_key(usage_key)))
|
||||
tasks.append(client.index(STUDIO_INDEX_NAME).delete_document(meili_id_from_opaque_key(usage_key)))
|
||||
|
||||
wait_for_meili_tasks(tasks)
|
||||
_wait_for_meili_tasks(tasks)
|
||||
|
||||
|
||||
def delete_index_docs(meili_ids: list[str], wait=True) -> list[TaskInfo]:
|
||||
def delete_all_index_docs_for_library(library_key: LibraryLocatorV2) -> None:
|
||||
"""
|
||||
Deletes documents for the given XBlocks from the search index
|
||||
|
||||
Args:
|
||||
meili_ids (list[str]): List of meili_ids from usage keys of the XBlocks to be removed from the index
|
||||
"""
|
||||
current_rebuild_index_name = _get_running_rebuild_index_name()
|
||||
|
||||
client = _get_meilisearch_client()
|
||||
filter = f'{Fields.context_key}="{library_key}"'
|
||||
|
||||
tasks = []
|
||||
if current_rebuild_index_name:
|
||||
# If there is a rebuild in progress, the document will also be deleted from the new index.
|
||||
tasks.append(client.index(current_rebuild_index_name).delete_documents(meili_ids))
|
||||
tasks.append(client.index(STUDIO_INDEX_NAME).delete_documents(meili_ids))
|
||||
# If there is a rebuild in progress, the documents will also be deleted from the new index.
|
||||
tasks.append(client.index(current_rebuild_index_name).delete_documents(filter=filter))
|
||||
tasks.append(client.index(STUDIO_INDEX_NAME).delete_documents(filter=filter))
|
||||
|
||||
if wait:
|
||||
wait_for_meili_tasks(tasks)
|
||||
return tasks
|
||||
_wait_for_meili_tasks(tasks)
|
||||
|
||||
|
||||
def upsert_library_block_index_doc(usage_key: UsageKey) -> None:
|
||||
@@ -506,7 +499,7 @@ def upsert_library_block_index_doc(usage_key: UsageKey) -> None:
|
||||
_update_index_docs(docs)
|
||||
|
||||
|
||||
def upsert_content_library_index_docs(library_key: LibraryLocatorV2, wait=True) -> None:
|
||||
def upsert_content_library_index_docs(library_key: LibraryLocatorV2) -> None:
|
||||
"""
|
||||
Creates or updates the documents for the given Content Library in the search index
|
||||
"""
|
||||
@@ -516,23 +509,7 @@ def upsert_content_library_index_docs(library_key: LibraryLocatorV2, wait=True)
|
||||
doc = searchable_doc_for_library_block(metadata)
|
||||
docs.append(doc)
|
||||
|
||||
return _update_index_docs(docs, wait=wait)
|
||||
|
||||
|
||||
def delete_content_library_index_docs(library_key: LibraryLocatorV2, wait=True) -> None:
|
||||
"""
|
||||
Deletes the discarded draft documents for the given Content Library in the search index
|
||||
"""
|
||||
meili_ids = []
|
||||
# draft version and published version equal to False/null means those drafts were discarded.
|
||||
for component in lib_api.get_library_components(library_key, draft=False, published=False):
|
||||
usage_key = LibraryUsageLocatorV2(
|
||||
library_key,
|
||||
component.component_type.name,
|
||||
component.local_key,
|
||||
)
|
||||
meili_ids.append(meili_id_from_opaque_key(usage_key))
|
||||
return delete_index_docs(meili_ids, wait=wait)
|
||||
return _update_index_docs(docs)
|
||||
|
||||
|
||||
def upsert_block_tags_index_docs(usage_key: UsageKey):
|
||||
|
||||
@@ -80,6 +80,5 @@ def update_content_library_index_docs(library_key_str: str) -> None:
|
||||
|
||||
log.info("Updating content index documents for library with id: %s", library_key)
|
||||
|
||||
tasks = api.delete_content_library_index_docs(library_key, wait=False) + \
|
||||
api.upsert_content_library_index_docs(library_key, wait=False)
|
||||
api.wait_for_meili_tasks(tasks)
|
||||
api.delete_all_index_docs_for_library(library_key)
|
||||
api.upsert_content_library_index_docs(library_key)
|
||||
|
||||
Reference in New Issue
Block a user