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

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 

5 

6 

7class ListFilesTable(APIResource): 

8 

9 def list(self, 

10 targets: List[str] = None, 

11 conditions: List[FilterCondition] = None, 

12 limit: int = None, 

13 *args, **kwargs) -> pd.DataFrame: 

14 

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 

23 

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 } 

34 

35 data.append(item) 

36 

37 return pd.DataFrame(data=data, columns=self.get_columns()) 

38 

39 def get_columns(self) -> List[str]: 

40 return ["path", "name", "extension", "bucket", "content"] 

41 

42 

43class FileTable(APIResource): 

44 

45 def list(self, targets: List[str] = None, table_name=None, *args, **kwargs) -> pd.DataFrame: 

46 return self.handler.read_as_table(table_name) 

47 

48 def add(self, data, table_name=None): 

49 df = pd.DataFrame(data) 

50 return self.handler.add_data_to_table(table_name, df)