def _re_create_mappings()

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)