#[macro_export]
macro_rules! git_spawn {
    ($repo:expr, $domain:ident -> $body:expr) => {{
        let repo_clone = $repo.clone();
        tokio::task::spawn_blocking(move || {
            let $domain = git::GitDomain::from_model(repo_clone)?;
            $body
        })
        .await
        .map_err(|e| {
            crate::error::AppError::InternalServerError(format!("Task join error: {}", e))
        })?
        .map_err(crate::error::AppError::from)
    }};
}
