code: def select(self, query: ast.Select) -> Response:
      conditions = extract_comparison_conditions(query.where)
  
      params = {}
      filters = []
      for op, arg1, arg2 in conditions:
          if op == "or":
              raise NotImplementedError(f"OR is not supported")
          if arg1 == "created_at":
              date = parse_utc_date(arg2)
              if op == ">":
                  # "tweets/search/recent" doesn't accept dates earlier than 7 days
                  if (dt.datetime.now(dt.timezone.utc) - date).days > 7:
                      # skip this condition
                      continue
                  params["start_time"] = date
              elif op == "<":
                  params["end_time"] = date
              else:
                  raise NotImplementedError
  
          elif arg1 == "query":
              if op == "=":
                  params[arg1] = arg2
              else:
                  NotImplementedError(f"Unknown op: {op}")
  
          elif arg1 == "id":
              if op == ">":
                  params["since_id"] = arg2
              elif op == ">=":
                  raise NotImplementedError("Please use 'id > value'")
              elif op == "<":
                  params["until_id"] = arg2
              elif op == "<=":
                  raise NotImplementedError("Please use 'id < value'")
              else:
                  NotImplementedError(
                      'Search with "id=" is not implemented'
                  )
  
          else:
              filters.append([op, arg1, arg2])
  
      if query.limit is not None:
          params["max_results"] = query.limit.value
  
      params["expansions"] = ["author_id", "in_reply_to_user_id"]
      params["tweet_fields"] = [
          "created_at",
          "conversation_id",
          "referenced_tweets",
      ]
      params["user_fields"] = ["name", "username"]
  
      if "query" not in params:
          # search not works without query, use 'mindsdb'
          params["query"] = "mindsdb"
  
      result = self.handler.call_twitter_api(
          method_name="search_recent_tweets",
          params=params,
          filters=filters,
      )
  
      # filter targets
      columns = []
      for target in query.targets:
          if isinstance(target, ast.Star):
              columns = []
              break
          elif isinstance(target, ast.Identifier):
              columns.append(target.parts[-1])
          else:
              raise NotImplementedError
  
      if len(columns) == 0:
          columns = self.get_columns()
  
      # columns to lower case
      columns = [name.lower() for name in columns]
  
      if len(result) == 0:
          result = pd.DataFrame([], columns=columns)
      else:
          # add absent columns
          for col in set(columns) & set(result.columns) ^ set(columns):
              result[col] = None
  
          # filter by columns
          result = result[columns]
      return result
  
imports: import re
  import os
  import datetime
  import ast
  import time
  from collections import defaultdict
  import pytz
  import io
  import requests
  import pandas
  import tweepy
  from mindsdb.utilities import log
  from mindsdb.utilities.config import Config
  from mindsdb_sql.parser import ast
  from mindsdb.integrations.libs.api_handler import APIHandler, APITable, FuncParser
  from mindsdb.integrations.utilities.sql_utils import extract_comparison_conditions
  from mindsdb.integrations.utilities.date_utils import parse_utc_date
  from mindsdb.integrations.libs.response import HandlerStatusResponse, HandlerResponse, RESPONSE_TYPE
label_desc: Use image node_id 1 for calling the TweetsTable obj's underlying member method code with example usage: obj.select(query) and returns: result