@@ -25,35 +25,50 @@ def __init__(
2525 self .created_at = created_at
2626 self .updated_at = updated_at
2727
28- self .datasources = []
29- for name in datasources :
30- try :
31- ds = self .client .datasources .get (name )
32- except RuntimeError :
33- # TODO skipped, it could be not sql skill
34- continue
35- self .datasources .append (ds )
28+ self .datasources = datasources
3629
3730 def update (
3831 self ,
39- model_name = None ,
32+ name : str = None ,
33+ model_name : str = None ,
4034 provider = None ,
4135 parameters = None ,
4236 datasources = None
4337 ):
44- if datasources :
45- datasources = [ds .model_dump () for ds in datasources ]
38+ data = {}
39+
40+ if datasources is not None :
41+ ds_names = []
42+ for ds in datasources :
43+ if isinstance (ds , Datasource ):
44+ ds = ds .name
45+ elif isinstance (ds , DatabaseConfig ):
46+ # try to create
47+ try :
48+ self .client .datasources .create (ds )
49+ except Exception :
50+ ...
51+ ds = ds .name
52+ elif not isinstance (ds , str ):
53+ raise ValueError (f'Unknown type of datasource: { ds } ' )
54+ ds_names .append (ds )
55+ data ['datasources' ] = ds_names
56+
57+ if name is not None :
58+ data ['name' ] = name
59+ if model_name is not None :
60+ data ['model_name' ] = model_name
61+ if provider is not None :
62+ data ['provider' ] = provider
63+ if parameters is not None :
64+ data ['parameters' ] = parameters
4665
4766 self .api .patch (
48- f'/projects/{ self .project } /minds' ,
49- data = {
50- 'name' : self .name ,
51- 'model_name' : model_name ,
52- 'provider' : provider ,
53- 'parameters' : parameters ,
54- 'datasources' : datasources ,
55- }
67+ f'/projects/{ self .project } /minds/{ self .name } ' ,
68+ data = data
5669 )
70+ if name is not None and name != self .name :
71+ self .name = name
5772
5873 def add_datasource (self , datasource : Datasource ):
5974 self .api .post (
0 commit comments