def METHOD_NAME(repo: Repo, v3_repo_path: pathlib.Path, run_hash: Optional[str] = None):
    sql_db_path = v3_repo_path / 'run_metadata.sqlite'
    runs_data = get_relational_data(sql_db_path)
    if run_hash is not None:
        migrate_single_run(repo, v3_repo_path, run_hash=run_hash, run_data=runs_data.get(run_hash))
    else:
        run_hash_list = []
        chunks_dir = v3_repo_path / 'meta' / 'chunks'
        if chunks_dir.exists():
            run_hash_list = list(map(lambda x: x.relative_to(chunks_dir).name, chunks_dir.glob('*')))
        runs_data = get_relational_data(sql_db_path)
        runs_iter = tqdm.tqdm(run_hash_list, leave=False)
        for run_hash in runs_iter:
            runs_iter.set_description(f'Processing Run "{run_hash}"')
            migrate_single_run(repo, v3_repo_path, run_hash=run_hash, run_data=runs_data.get(run_hash))