class_docstr: This handler handles connection and execution of the Weaviate statements.
class_docstr_tok: ["This","handler","handles","connection","and","execution","of","the","Weaviate","statements","."]
code: def delete(
      self, table_name: str, conditions: List[FilterCondition] = None
  ) -> HandlerResponse:
      table_name = table_name.capitalize()
      non_metadata_conditions = [
          condition
          for condition in conditions
          if not condition.column.startswith(TableField.METADATA.value)
          and condition.column != TableField.SEARCH_VECTOR.value
          and condition.column != TableField.EMBEDDINGS.value
      ]
      metadata_conditions = [
          condition
          for condition in conditions
          if condition.column.startswith(TableField.METADATA.value)
      ]
      filters = self._translate_condition(
          table_name,
          non_metadata_conditions if non_metadata_conditions else None,
          metadata_conditions if metadata_conditions else None,
      )
      if not filters:
          raise Exception(
              "Delete query must have at least one condition!"
          )
      metadata_table_name = table_name.capitalize() + "_metadata"
      # query to get metadata ids
      metadata_query = f"associatedMetadata {{ ... on {metadata_table_name} {{ _additional {{ id }} }} }}"
      result = (
          self._client.query.get(table_name, metadata_query)
          .with_additional(["id"])
          .with_where(filters)
          .do()
      )
      result = result["data"]["Get"][table_name]
      metadata_table_name = table_name.capitalize() + "_metadata"
      table_ids = []
      metadata_ids = []
      for i in result:
          table_ids.append(i["_additional"]["id"])
          metadata_ids.append(
              i["associatedMetadata"][0]["_additional"]["id"]
          )
      self._client.batch.delete_objects(
          class_name=table_name,
          where={
              "path": ["id"],
              "operator": "ContainsAny",
              "valueTextArray": table_ids,
          },
      )
      self._client.batch.delete_objects(
          class_name=metadata_table_name,
          where={
              "path": ["id"],
              "operator": "ContainsAny",
              "valueTextArray": metadata_ids,
          },
      )
      return Response(resp_type=RESPONSE_TYPE.OK)
  
imports: from collections import OrderedDict
  from datetime import datetime
  from typing import List, Optional
  import weaviate
  from weaviate.embedded import EmbeddedOptions
  import pandas
  from mindsdb.integrations.libs.const import HANDLER_CONNECTION_ARG_TYPE
  from mindsdb.integrations.libs.response import RESPONSE_TYPE
  from mindsdb.integrations.libs.response import HandlerResponse
  from mindsdb.integrations.libs.response import HandlerResponse
  from mindsdb.integrations.libs.response import HandlerStatusResponse
  from mindsdb.integrations.libs.vectordatabase_handler import FilterCondition, FilterOperator, TableField, VectorStoreHandler
  from mindsdb.utilities import log
  from weaviate.util import generate_uuid5
label_desc: Use image node_id 13 for calling the WeaviateDBHandler obj's underlying member method code with example usage: obj.delete(table_name, conditions) and returns: Response