Coverage for mindsdb / integrations / handlers / gcs_handler / gcs_tables.py: 0%
29 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
1from mindsdb.integrations.libs.api_handler import APIResource
2from mindsdb.integrations.utilities.sql_utils import FilterCondition, FilterOperator
3import pandas as pd
4from typing import List
7class ListFilesTable(APIResource):
9 def list(self,
10 targets: List[str] = None,
11 conditions: List[FilterCondition] = None,
12 limit: int = None,
13 *args, **kwargs) -> pd.DataFrame:
15 buckets = None
16 for condition in conditions:
17 if condition.column == 'bucket':
18 if condition.op == FilterOperator.IN:
19 buckets = condition.value
20 elif condition.op == FilterOperator.EQUAL:
21 buckets = [condition.value]
22 condition.applied = True
24 data = []
25 for obj in self.handler.get_objects(limit=limit, buckets=buckets):
26 path = obj['Key']
27 path = path.replace('`', '')
28 item = {
29 'path': path,
30 'bucket': obj['Bucket'],
31 'name': path[path.rfind('/') + 1:],
32 'extension': path[path.rfind('.') + 1:]
33 }
35 data.append(item)
37 return pd.DataFrame(data=data, columns=self.get_columns())
39 def get_columns(self) -> List[str]:
40 return ["path", "name", "extension", "bucket", "content"]
43class FileTable(APIResource):
45 def list(self, targets: List[str] = None, table_name=None, *args, **kwargs) -> pd.DataFrame:
46 return self.handler.read_as_table(table_name)
48 def add(self, data, table_name=None):
49 df = pd.DataFrame(data)
50 return self.handler.add_data_to_table(table_name, df)