code: def get_columns(self, table_name: str):
      # at the moment it works only for models
      predictor_record = db.Predictor.query.filter_by(
          company_id=ctx.company_id, project_id=self.id, name=table_name
      ).first()
      columns = []
      if predictor_record is not None:
          if isinstance(predictor_record.dtype_dict, dict):
              columns = list(predictor_record.dtype_dict.keys())
          elif predictor_record.to_predict is not None:
              # no dtype_dict, use target
              columns = predictor_record.to_predict
              if not isinstance(columns, list):
                  columns = [columns]
  
      return columns
  
imports: import datetime
  from typing import List
  from collections import OrderedDict
  import sqlalchemy
  import numpy
  from mindsdb_sql.parser.ast.base import ASTNode
  from mindsdb_sql import parse_sql
  from mindsdb.interfaces.storage import db
  from mindsdb.utilities.config import Config
  from mindsdb.interfaces.model.model_controller import ModelController
  from mindsdb.interfaces.database.views import ViewController
  from mindsdb.utilities.context import context
  from mindsdb.utilities.exception import EntityExistsError
  import mindsdb.utilities.profiler
label_desc: Use image node_id 18 for calling the Project obj's underlying member method code with example usage: obj.get_columns(table_name) and returns: columns