in backend/bms_app/mapping/services.py [0:0]
def _re_create_mappings(cls, source_db, new_bms_ids):
db_id = source_db.id
qs = db.session.query(Mapping) \
.with_entities(Mapping.bms_id) \
.filter(Mapping.db_id == db_id) \
.all()
existing_bms_ids = [x[0] for x in qs]
# re-create mappings and clear config in case there are some changes
if set(existing_bms_ids) != set(new_bms_ids):
# delete all mappings for specific db
db.session.query(Mapping).filter(Mapping.db_id == db_id)\
.delete(synchronize_session=False)
# create new mappings for db
for index, bms_id in enumerate(new_bms_ids, 1):
mapping = Mapping(
db_id=db_id,
bms_id=bms_id,
rac_node=index if source_db.is_rac else None,
)
db.session.add(mapping)
if not new_bms_ids:
source_db.wave_id = None
db.session.add(source_db)
cls._clear_db_config(source_db)