docstr: Updates an event or events in the calendar.
  
  Args:
      query (ast.Update): SQL query to parse.
  
  Returns:
      Response: Response object containing the results.
docstr_tok: ["Updates","an","event","or","events","in","the","calendar",".","Args",":","query","(","ast.Update",")",":","SQL","query","to","parse",".","Returns",":","Response",":","Response","object","containing","the","results","."]
code: def update(self, query: ast.Update):
      """
      Updates an event or events in the calendar.
  
      Args:
          query (ast.Update): SQL query to parse.
  
      Returns:
          Response: Response object containing the results.
      """
  
      # Get the values from the query.
      values = query.values[0]
      # Get the event data from the values.
      event_data = {}
      for col, val in zip(query.update_columns, values):
          if (
              col == "start_time"
              or col == "end_time"
              or col == "created"
              or col == "updated"
          ):
              event_data[col] = utc_date_str_to_timestamp_ms(val)
          elif (
              col == "summary"
              or col == "description"
              or col == "location"
              or col == "status"
              or col == "html_link"
              or col == "creator"
              or col == "organizer"
              or col == "reminders"
              or col == "timeZone"
              or col == "calendar_id"
              or col == "attendees"
          ):
              event_data[col] = val
          else:
              raise NotImplementedError
  
      event_data["start"] = {
          "dateTime": event_data["start_time"],
          "timeZone": event_data["timeZone"],
      }
  
      event_data["end"] = {
          "dateTime": event_data["end_time"],
          "timeZone": event_data["timeZone"],
      }
  
      event_data["attendees"] = event_data.get("attendees").split(",")
      event_data["attendees"] = [
          {"email": attendee} for attendee in event_data["attendees"]
      ]
  
      conditions = extract_comparison_conditions(query.where)
      for op, arg1, arg2 in conditions:
          if arg1 == "event_id":
              if op == "=":
                  event_data["event_id"] = arg2
              elif op == ">":
                  event_data["start_id"] = arg2
              elif op == "<":
                  event_data["end_id"] = arg2
              else:
                  raise NotImplementedError
          else:
              raise NotImplementedError
  
      # Update the event in the Google Calendar API.
      self.handler.call_application_api(
          method_name="update_event", params=event_data
      )
  
file_path: mindsdb/mindsdb/integrations/handlers/google_calendar_handler/google_calendar_tables.py
imports: import pandas
  import datetime
  from mindsdb_sql.parser import ast
  from pandas import DataFrame
  from mindsdb.integrations.libs.api_handler import APITable
  from mindsdb.integrations.libs.response import HandlerResponse
  from mindsdb.integrations.utilities.date_utils import utc_date_str_to_timestamp_ms, parse_utc_date
  from mindsdb.integrations.utilities.sql_utils import extract_comparison_conditions
label_desc: Use image node_id 3 for calling the GoogleCalendarEventsTable obj's underlying member method code with example usage: obj.update(query) without return types