def generate_db_mappings_objects()

in backend/bms_app/services/operations/db_mappings.py [0:0]


def generate_db_mappings_objects(qs):
    """Get list of SourceDB/Mapping objects.

    Output: [
        DbMapping(db=<SourceDB 1>, mappings=[<Mapping 1>, <Mapping 2>]),
        DbMapping(db=<SourceDB 2>, mappings=[<Mapping 3>]),
        ....
    ]
    """
    data = {}

    for source_db, mapping in qs.all():
        db_id = source_db.id

        if db_id not in data:
            data[db_id] = {
                'db': source_db,
                'mappings': [],
            }
        
        if not mapping:
            data[db_id]['is_dms'] = True

        data[db_id]['mappings'].append(mapping)

    objects = []

    for obj in data.values():
        objects.append(
            DbMapping(
                db=obj['db'],
                mappings=obj['mappings'],
                is_dms=obj['is_dms'],
            )
        )

    return objects