in backend/bms_app/wave/services/waves.py [0:0]
def assign_source_db_wave(wave, db_ids):
"""Assign wave to databases, and count assigned, skipped and unmapped"""
assigned = skipped = unmapped = 0
# join Mapping in order to know if db is mapped to any target
query = db.session.query(SourceDB, func.count(Mapping.id))\
.outerjoin(Mapping, SourceDB.id == Mapping.db_id)\
.filter(
SourceDB.id.in_(db_ids),
SourceDB.project_id == wave.project_id) \
.group_by(SourceDB)\
.all()
for source_db, mapp_count in query:
if not mapp_count and source_db.db_engine == SourceDBEngine.ORACLE:
unmapped += 1
# assign only db without any operation
elif source_db.status == SourceDBStatus.EMPTY and \
(not source_db.wave or not source_db.wave.is_running):
source_db.wave_id = wave.id
assigned += 1
else:
skipped += 1
db.session.commit()
return {
'assigned': assigned,
'skipped': skipped,
'unmapped': unmapped,
}