MCPcopy Index your code
hub / github.com/dataease/SQLBot / sync_table

Function sync_table

backend/apps/datasource/crud/datasource.py:194–235  ·  view source on GitHub ↗
(session: SessionDep, ds: CoreDatasource, tables: List[CoreTable])

Source from the content-addressed store, hash-verified

192
193
194def sync_table(session: SessionDep, ds: CoreDatasource, tables: List[CoreTable]):
195 id_list = []
196 for item in tables:
197 statement = select(CoreTable).where(and_(CoreTable.ds_id == ds.id, CoreTable.table_name == item.table_name))
198 record = session.exec(statement).first()
199 # update exist table, only update table_comment
200 if record is not None:
201 item.id = record.id
202 id_list.append(record.id)
203
204 record.table_comment = item.table_comment
205 session.add(record)
206 session.commit()
207 else:
208 # save new table
209 table = CoreTable(ds_id=ds.id, checked=True, table_name=item.table_name, table_comment=item.table_comment,
210 custom_comment=item.table_comment)
211 session.add(table)
212 session.flush()
213 session.refresh(table)
214 item.id = table.id
215 id_list.append(table.id)
216 session.commit()
217
218 # sync field
219 fields = getFieldsByDs(session, ds, item.table_name)
220 sync_fields(session, ds, item, fields)
221
222 if len(id_list) > 0:
223 session.query(CoreTable).filter(and_(CoreTable.ds_id == ds.id, CoreTable.id.not_in(id_list))).delete(
224 synchronize_session=False)
225 session.query(CoreField).filter(and_(CoreField.ds_id == ds.id, CoreField.table_id.not_in(id_list))).delete(
226 synchronize_session=False)
227 session.commit()
228 else: # delete all tables and fields in this ds
229 session.query(CoreTable).filter(CoreTable.ds_id == ds.id).delete(synchronize_session=False)
230 session.query(CoreField).filter(CoreField.ds_id == ds.id).delete(synchronize_session=False)
231 session.commit()
232
233 # do table embedding
234 run_save_table_embeddings(id_list)
235 run_save_ds_embeddings([ds.id])
236
237
238def sync_fields(session: SessionDep, ds: CoreDatasource, table: CoreTable, fields: List[ColumnSchema]):

Callers 2

create_dsFunction · 0.85
chooseTablesFunction · 0.85

Calls 11

run_save_ds_embeddingsFunction · 0.90
CoreTableClass · 0.85
getFieldsByDsFunction · 0.85
sync_fieldsFunction · 0.70
addMethod · 0.65
firstMethod · 0.45
execMethod · 0.45
appendMethod · 0.45
deleteMethod · 0.45
filterMethod · 0.45

Tested by

no test coverage detected