docstr: Receive query as AST (abstract syntax tree) and act upon it somehow.
  
  Args:
      query (ASTNode): sql query represented as AST. Usually it should be ast.Insert
  
  Returns:
      None
docstr_tok: ["Receive","query","as","AST","(","abstract","syntax","tree",")","and","act","upon","it","somehow",".","Args",":","query","(","ASTNode",")",":","sql","query","represented","as","AST",".","Usually","it","should","be","ast.Insert","Returns",":","None"]
code: def insert(self, query: ast.Insert) -> None:
      """Receive query as AST (abstract syntax tree) and act upon it somehow.
  
      Args:
          query (ASTNode): sql query represented as AST. Usually it should be ast.Insert
  
      Returns:
          None
      """
      data = {"translations": {"name": {}, "description": {}}}
  
      for column, value in zip(query.columns, query.values[0]):
          if isinstance(value, Constant):
              data[column.name] = (
                  json.loads(value.value)
                  if column.name == "translations"
                  else value.value
              )
          elif isinstance(value, str):
              try:
                  if re.match(
                      r"^translations_name_in_[a-zA-Z\-]+$", column.name
                  ):
                      lang_code = column.name.split("_")[-1]
                      if lang_code not in langCodes:
                          raise Exception(
                              f"Invalid language code {lang_code}"
                          )
                      data["translations"]["name"][lang_code] = value
                  elif re.match(
                      r"^translations_desc_in_[a-zA-Z\-]+$", column.name
                  ):
                      lang_code = column.name.split("_")[-1]
                      if lang_code not in langCodes:
                          raise Exception(
                              f"Invalid language code {lang_code}"
                          )
                      data["translations"]["description"][
                          lang_code
                      ] = value
                  else:
                      data[column.name] = json.loads(value)
              except json.JSONDecodeError:
                  data[column.name] = (
                      True
                      if value == "True"
                      else (False if value == "False" else value)
                  )
  
      page_id = data.pop("page_id", None)
  
      if page_id is not None:
          self.handler.call_instatus_api(
              endpoint=f"/v1/{page_id}/components",
              method="POST",
              json_data=data,
          )
  
file_path: mindsdb/mindsdb/integrations/handlers/instatus_handler/instatus_tables.py
imports: from typing import List
  import pandas
  from mindsdb.integrations.libs.api_handler import APITable
  from mindsdb_sql.parser import ast
  from mindsdb.integrations.utilities.sql_utils import extract_comparison_conditions
  from mindsdb_sql.parser.ast.select.constant import Constant
  import json
  import re
label_desc: Use image node_id 2 for calling the Components obj's underlying member method code with example usage: obj.insert(query) without return types