def delete_engine()

in components/llm_service/src/services/query/query_service.py [0:0]


def delete_engine(q_engine: QueryEngine, hard_delete: bool=False):
  """
  Delete query engine and associated models and vector store data.
  """
  Logger.info(f"Deleting query engine [{q_engine.id}]"
              f" hard_delete=[{hard_delete}]")

  # delete vector store data
  try:
    if q_engine.query_engine_type == QE_TYPE_VERTEX_SEARCH:
      delete_vertex_search(q_engine)
    else:
      qe_vector_store = vector_store_from_query_engine(q_engine)
      qe_vector_store.delete()
  except Exception:
    # we make this error non-fatal as we want to delete the models
    Logger.error(
        f"error deleting vector store for query engine {q_engine.id}")
    Logger.error(traceback.print_exc())

  if hard_delete is True:
    Logger.info(f"performing hard delete of query engine {q_engine.id}")

    # delete query docs and chunks
    QueryDocument.collection.filter(
      "query_engine_id", "==", q_engine.id
    ).delete()

    QueryDocumentChunk.collection.filter(
      "query_engine_id", "==", q_engine.id
    ).delete()

    QueryReference.collection.filter(
      "query_engine_id", "==", q_engine.id
    ).delete()

    QueryResult.collection.filter(
      "query_engine_id", "==", q_engine.id
    ).delete()

    # delete query engine
    QueryEngine.delete_by_id(q_engine.id)
  else:
    Logger.info(f"performing soft delete of query engine {q_engine.id}")

    # delete query docs and chunks
    qdocs = QueryDocument.collection.filter(
      "query_engine_id", "==", q_engine.id).fetch()
    for qd in qdocs:
      qd.soft_delete_by_id(qd.id)

    qchunks = QueryDocumentChunk.collection.filter(
      "query_engine_id", "==", q_engine.id).fetch()
    for qc in qchunks:
      qc.soft_delete_by_id(qc.id)

    qrefs = QueryReference.collection.filter(
      "query_engine_id", "==", q_engine.id).fetch()
    for qr in qrefs:
      qr.soft_delete_by_id(qr.id)

    qres = QueryResult.collection.filter(
      "query_engine_id", "==", q_engine.id).fetch()
    for qr in qres:
      qr.soft_delete_by_id(qr.id)

    # delete query engine
    QueryEngine.soft_delete_by_id(q_engine.id)

  Logger.info(f"Successfully deleted q_engine=[{q_engine.name}]")