code: def construct_function_cache_catalog_entry(
      func_expr: FunctionExpression, cache_dir: str
  ) -> FunctionCacheCatalogEntry:
      """Constructs a function cache catalog entry from a given function expression.
      It is assumed that the function expression has already been bound using the binder.
      The catalog entry is populated with dependent functions and columns by traversing the
      expression tree. The cache name is represented by the signature of the function
      expression.
      Args:
          func_expr (FunctionExpression): the function expression with which the cache is associated
          cache_dir (str): path to store the cache
      Returns:
          FunctionCacheCatalogEntry: the function cache catalog entry
      """
      function_depends = []
      col_depends = []
      for expr in func_expr.find_all(FunctionExpression):
          function_depends.append(expr.function_obj.row_id)
      for expr in func_expr.find_all(TupleValueExpression):
          col_depends.append(expr.col_object.row_id)
      cache_name = func_expr.signature()
  
      # add salt to the cache_name so that we generate unique name
      path = str(get_str_hash(cache_name + uuid.uuid4().hex))
      cache_path = str(
          Path(cache_dir) / Path(f"{path}_{func_expr.name}")
      )
      args = tuple([arg.signature() for arg in func_expr.children])
      entry = FunctionCacheCatalogEntry(
          name=func_expr.signature(),
          function_id=func_expr.function_obj.row_id,
          cache_path=cache_path,
          args=args,
          function_depends=function_depends,
          col_depends=col_depends,
      )
  
      return entry
  
imports: import uuid
  from pathlib import Path
  from typing import Any, Dict, List
  from evadb.catalog.catalog_type import ColumnType, DocumentColumnName, ImageColumnName, NdArrayType, PDFColumnName, TableType, VideoColumnName
  from evadb.catalog.models.utils import ColumnCatalogEntry, FunctionCacheCatalogEntry, FunctionCatalogEntry, TableCatalogEntry
  from evadb.catalog.sql_config import IDENTIFIER_COLUMN
  from evadb.expression.function_expression import FunctionExpression
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.create_statement import ColConstraintInfo, ColumnDefinition
  from evadb.utils.generic_utils import get_str_hash
label_desc: Use image node_id 11 for calling a global function with example usage: construct_function_cache_catalog_entry(func_expr, cache_dir) and returns: entry