11from enum import Enum
2+ from urllib .parse import urljoin
23from .nocodb import NocoDBProject
34
45
56class NocoDBAPIUris (Enum ):
6- V1_DB_DATA_PREFIX = "api/v1/db/data"
7- V1_DB_META_PREFIX = "api/v1/db/meta"
7+ V1_DB_DATA_PREFIX = "api/v1/db/data/ "
8+ V1_DB_META_PREFIX = "api/v1/db/meta/ "
89
910
1011class NocoDBAPI :
1112 def __init__ (self , base_uri : str ):
12- self .__base_data_uri = (
13- f"{ base_uri } /{ NocoDBAPIUris .V1_DB_DATA_PREFIX .value } "
14- )
15- self .__base_meta_uri = (
16- f"{ base_uri } /{ NocoDBAPIUris .V1_DB_META_PREFIX .value } "
17- )
13+ self .__base_data_uri = urljoin (base_uri + "/" , NocoDBAPIUris .V1_DB_DATA_PREFIX .value )
14+ self .__base_meta_uri = urljoin (base_uri + "/" , NocoDBAPIUris .V1_DB_META_PREFIX .value )
1815
1916 def get_table_uri (self , project : NocoDBProject , table : str ) -> str :
20- return "/" .join (
17+ return urljoin ( self . __base_data_uri , "/" .join (
2118 (
22- self .__base_data_uri ,
2319 project .org_name ,
2420 project .project_name ,
2521 table ,
2622 )
27- )
23+ ))
2824
2925 def get_table_count_uri (self , project : NocoDBProject , table : str ) -> str :
3026 return "/" .join (
@@ -45,15 +41,14 @@ def get_table_find_one_uri(self, project: NocoDBProject, table: str) -> str:
4541 def get_row_detail_uri (
4642 self , project : NocoDBProject , table : str , row_id : int
4743 ):
48- return "/" .join (
44+ return urljoin ( self . __base_data_uri , "/" .join (
4945 (
50- self .__base_data_uri ,
5146 project .org_name ,
5247 project .project_name ,
5348 table ,
5449 str (row_id ),
5550 )
56- )
51+ ))
5752
5853 def get_nested_relations_rows_list_uri (
5954 self ,
@@ -63,24 +58,57 @@ def get_nested_relations_rows_list_uri(
6358 row_id : int ,
6459 column_name : str ,
6560 ) -> str :
66- return "/" .join (
61+ return urljoin ( self . __base_data_uri , "/" .join (
6762 (
68- self .__base_data_uri ,
6963 project .org_name ,
7064 project .project_name ,
7165 table ,
7266 str (row_id ),
7367 relation_type ,
7468 column_name ,
7569 )
76- )
70+ ))
7771
7872 def get_project_uri (
7973 self ,
8074 ) -> str :
81- return "/" .join (
75+ return urljoin (self .__base_meta_uri , "projects" )
76+
77+ def get_project_tables_uri (
78+ self , project : NocoDBProject ,
79+ ) -> str :
80+ return urljoin (self .__base_meta_uri , "/" .join (
8281 (
83- self .__base_meta_uri ,
84- "projects"
82+ "projects" ,
83+ project .project_name ,
84+ "tables"
8585 )
86- )
86+ ))
87+
88+ def get_table_meta_uri (
89+ self , tableId : str , operation : str = None ,
90+ ) -> str :
91+ additional_path = []
92+ if operation is not None :
93+ additional_path .append (operation )
94+
95+ return urljoin (self .__base_meta_uri , "/" .join (
96+ [
97+ "tables" ,
98+ tableId ,
99+ ] + additional_path
100+ ))
101+
102+ def get_column_uri (
103+ self , columnId : str , operation : str = None ,
104+ ) -> str :
105+ additional_path = []
106+ if operation is not None :
107+ additional_path .append (operation )
108+
109+ return urljoin (self .__base_meta_uri , "/" .join (
110+ [
111+ "columns" ,
112+ columnId ,
113+ ] + additional_path
114+ ))
0 commit comments