code: def log_event(
      self,
      model,
      messages,
      end_user,
      response_obj,
      start_time,
      end_time,
      litellm_call_id,
      print_verbose,
  ):
      try:
          print_verbose(
              f"Supabase Logging - Enters logging function for model {model}, response_obj: {response_obj}"
          )
  
          total_cost = litellm.completion_cost(
              completion_response=response_obj
          )
  
          response_time = (end_time - start_time).total_seconds()
          if "choices" in response_obj:
              supabase_data_obj = {
                  "response_time": response_time,
                  "model": response_obj["model"],
                  "total_cost": total_cost,
                  "messages": messages,
                  "response": response_obj["choices"][0]["message"][
                      "content"
                  ],
                  "end_user": end_user,
                  "litellm_call_id": litellm_call_id,
                  "status": "success",
              }
              print_verbose(
                  f"Supabase Logging - final data object: {supabase_data_obj}"
              )
              data, count = (
                  self.supabase_client.table(self.supabase_table_name)
                  .upsert(
                      supabase_data_obj, on_conflict="litellm_call_id"
                  )
                  .execute()
              )
          elif "error" in response_obj:
              if (
                  "Unable to map your input to a model."
                  in response_obj["error"]
              ):
                  total_cost = 0
              supabase_data_obj = {
                  "response_time": response_time,
                  "model": response_obj["model"],
                  "total_cost": total_cost,
                  "messages": messages,
                  "error": response_obj["error"],
                  "end_user": end_user,
                  "litellm_call_id": litellm_call_id,
                  "status": "failure",
              }
              print_verbose(
                  f"Supabase Logging - final data object: {supabase_data_obj}"
              )
              data, count = (
                  self.supabase_client.table(self.supabase_table_name)
                  .upsert(
                      supabase_data_obj, on_conflict="litellm_call_id"
                  )
                  .execute()
              )
  
      except:
          # traceback.print_exc()
          print_verbose(
              f"Supabase Logging Error - {traceback.format_exc()}"
          )
          pass
  
file_path: litellm/litellm/integrations/supabase.py
imports: import dotenv, os
  import requests
  import traceback
  import datetime, subprocess, sys
  import litellm
label_desc: Use image node_id 3 for calling the Supabase obj's underlying member method code with example usage: obj.log_event(model, messages, end_user, response_obj, start_time, end_time, litellm_call_id, print_verbose) without return types