@@ -25,14 +25,7 @@ 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 ,
@@ -42,18 +35,37 @@ def update(
4235 parameters = None ,
4336 datasources = None
4437 ):
45- if datasources :
46- 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
4765
4866 self .api .patch (
49- f'/projects/{ self .project } /minds' ,
50- data = {
51- 'name' : name ,
52- 'model_name' : model_name ,
53- 'provider' : provider ,
54- 'parameters' : parameters ,
55- 'datasources' : datasources ,
56- }
67+ f'/projects/{ self .project } /minds/{ self .name } ' ,
68+ data = data
5769 )
5870 if name is not None and name != self .name :
5971 self .name = name
0 commit comments