docstr: Insert a new function cache entry into function cache catalog.
  Arguments:
      `name` (str): name of the cache table
      `function_id` (int): `row_id` of the function on which the cache is built
      `cache_path` (str): path of the cache table
      `args` (List[Any]): arguments of the function whose output is being cached
      `function_depends` (List[FunctionCatalogEntry]): dependent function  entries
      `col_depends` (List[ColumnCatalogEntry]): dependent column entries
  Returns:
      `FunctionCacheCatalogEntry`
docstr_tok: ["Insert","a","new","function","cache","entry","into","function","cache","catalog",".","Arguments",":","`","name","`","(","str",")",":","name","of","the","cache","table","`","function_id","`","(","int",")",":","`","row_id","`","of","the","function","on","which","the","cache","is","built","`","cache_path","`","(","str",")",":","path","of","the","cache","table","`","args","`","(","List","[","Any","]",")",":","arguments","of","the","function","whose","output","is","being","cached","`","function_depends","`","(","List","[","FunctionCatalogEntry","]",")",":","dependent","function","entries","`","col_depends","`","(","List","[","ColumnCatalogEntry","]",")",":","dependent","column","entries","Returns",":","`","FunctionCacheCatalogEntry","`"]
code: def insert_entry(
      self, entry: FunctionCacheCatalogEntry
  ) -> FunctionCacheCatalogEntry:
      """Insert a new function cache entry into function cache catalog.
      Arguments:
          `name` (str): name of the cache table
          `function_id` (int): `row_id` of the function on which the cache is built
          `cache_path` (str): path of the cache table
          `args` (List[Any]): arguments of the function whose output is being cached
          `function_depends` (List[FunctionCatalogEntry]): dependent function  entries
          `col_depends` (List[ColumnCatalogEntry]): dependent column entries
      Returns:
          `FunctionCacheCatalogEntry`
      """
      try:
          cache_obj = self.model(
              name=entry.name,
              function_id=entry.function_id,
              cache_path=entry.cache_path,
              args=entry.args,
          )
  
          cache_obj._function_depends = [
              self._function_service.get_entry_by_id(
                  function_id, return_alchemy=True
              )
              for function_id in entry.function_depends
          ]
          cache_obj._col_depends = [
              self._column_service.get_entry_by_id(
                  col_id, return_alchemy=True
              )
              for col_id in entry.col_depends
          ]
          cache_obj = cache_obj.save(self.session)
  
      except Exception as e:
          err_msg = f"Failed to insert entry into function cache catalog with exception {str(e)}"
          logger.exception(err_msg)
          raise CatalogError(err_msg)
      else:
          return cache_obj.as_dataclass()
  
file_path: evadb/evadb/catalog/services/function_cache_catalog_service.py
imports: from sqlalchemy.orm import Session
  from sqlalchemy.orm.exc import NoResultFound
  from sqlalchemy.sql.expression import select
  from evadb.catalog.models.function_cache_catalog import FunctionCacheCatalog
  from evadb.catalog.models.utils import FunctionCacheCatalogEntry
  from evadb.catalog.services.base_service import BaseService
  from evadb.catalog.services.column_catalog_service import ColumnCatalogService
  from evadb.catalog.services.function_catalog_service import FunctionCatalogService
  from evadb.utils.errors import CatalogError
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 2 for calling the FunctionCacheCatalogService obj's underlying member method code with example usage: obj.insert_entry(entry) and returns: cache_obj