code: def get_list(self, filter_type: Optional[str] = None):
      projects = self.project_controller.get_list()
      integrations = self.integration_controller.get_all()
      result = [
          {
              "name": "information_schema",
              "type": "system",
              "id": None,
              "engine": None,
          }
      ]
      for x in projects:
          result.append(
              {
                  "name": x.name,
                  "type": "project",
                  "id": x.id,
                  "engine": None,
              }
          )
      for key, value in integrations.items():
          db_type = value.get("type", "data")
          if db_type != "ml":
              result.append(
                  {
                      "name": key,
                      "type": value.get("type", "data"),
                      "id": value.get("id"),
                      "engine": value.get("engine"),
                      "class_type": value.get("class_type"),
                      "connection_data": value.get("connection_data"),
                  }
              )
  
      if filter_type is not None:
          result = [x for x in result if x["type"] == filter_type]
  
      return result
  
file_path: mindsdb/mindsdb/interfaces/database/database.py
imports: from typing import Optional
  from collections import OrderedDict
  from mindsdb.interfaces.database.projects import ProjectController
  import mindsdb.utilities.profiler
  from mindsdb.utilities.exception import EntityNotExistsError
label_desc: Use image node_id 3 for calling the DatabaseController obj's underlying member method code with example usage: obj.get_list(filter_type) and returns: result