Skip to content

Commit ff8f006

Browse files
committed
tested, added sample
1 parent df3d2ad commit ff8f006

File tree

5 files changed

+44
-9
lines changed

5 files changed

+44
-9
lines changed

examples/base_usage.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
tables=['<TABLE-1>', '<TABLE-2>']
2727
)
2828

29+
# using sample config
30+
from minds.datasources.examples import example_ds
31+
2932
# create mind
3033
# with datasource at the same time
3134
mind = client.minds.create(name='mind_name', datasources=[postgres_config] )

minds/datasources/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .datasources import *

minds/datasources/examples.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
from minds.datasources import DatabaseConfig
3+
4+
example_ds = DatabaseConfig(
5+
name='example_ds',
6+
engine='postgres',
7+
description='Minds example database',
8+
connection_data={
9+
"user": "demo_user",
10+
"password": "demo_password",
11+
"host": "samples.mindsdb.com",
12+
"port": "5432",
13+
"database": "demo",
14+
"schema": "demo_data"
15+
}
16+
)

minds/minds.py

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import List, Union
22

3-
from minds.datasources import Datasource
3+
from minds.datasources import Datasource, DatabaseConfig
44

55

66
class Mind:
@@ -60,10 +60,12 @@ def add_datasource(self, datasource: Datasource):
6060
f'/projects/{self.project}/minds/{self.name}/datasources',
6161
data=datasource.model_dump()
6262
)
63-
self.datasources.append(datasource)
63+
updated = self.client.minds.get(self.name)
64+
65+
self.datasources = updated.datasources
6466

6567
def del_datasource(self, datasource: Union[Datasource, str]):
66-
raise NotImplemented
68+
raise NotImplementedError
6769

6870

6971
class Minds:
@@ -98,10 +100,22 @@ def create(
98100
self.drop(name)
99101
except Exception:
100102
...
103+
104+
ds_names = []
101105
if datasources:
102-
datasources = [ds.model_dump() for ds in datasources]
103-
else:
104-
datasources = []
106+
for ds in datasources:
107+
if isinstance(ds, Datasource):
108+
ds = ds.name
109+
elif isinstance(ds, DatabaseConfig):
110+
# try to create
111+
try:
112+
self.client.datasources.create(ds)
113+
except Exception:
114+
...
115+
ds = ds.name
116+
elif not isinstance(ds, str):
117+
raise ValueError(f'Unknown type of datasource: {ds}')
118+
ds_names.append(ds)
105119

106120
self.api.post(
107121
f'/projects/{self.project}/minds',
@@ -110,7 +124,7 @@ def create(
110124
'model_name': model_name,
111125
'provider': provider,
112126
'parameters': parameters,
113-
'datasources': datasources,
127+
'datasources': ds_names,
114128
}
115129
)
116130
mind = self.get(name)
@@ -119,7 +133,8 @@ def create(
119133

120134
def drop(self, name: str):
121135
mind = self.get(name)
122-
for ds in mind.datasources:
123-
mind.del_datasource(ds)
136+
# TODO not implemented yet
137+
# for ds in mind.datasources:
138+
# mind.del_datasource(ds)
124139

125140
self.api.delete(f'/projects/{self.project}/minds/{name}')

0 commit comments

Comments
 (0)