2ae9196
ZhenYi
feat(lib/git): add HTTP handler tree with routes and errors across analysis, archives, blobs, branches, commits, conflicts, content, diffs, hooks, lfs, logs, maintenance, packs, patches, pipelines, refs, remotes, repos, signatures, submodules, tags, trees
2ae9196
use axum::extract::{Path, Query, State};
use export::rest::AppResponseData;
use gitbaby::diff::types::NumStat;
use session::Session;
use crate::errors::{ApiError, GitApiError};
use crate::handler::resolve_reader;
use crate::service::GitService;
use crate::service::diffs::DiffOptionsDto;
#[derive(Debug, Clone, serde::Deserialize)]
pub struct DiffBaseHeadQuery {
pub base: String,
pub head: String,
}
pub async fn diff_stats(
State(service): State<GitService>,
session: Session,
Path(path): Path<crate::handler::RepoPath>,
Query(q): Query<DiffBaseHeadQuery>,
) -> Result<AppResponseData<Vec<NumStat>>, ApiError> {
let _ = resolve_reader(&service, &session, path.space_name.clone(), path.repo_name.clone()).await?;
let out = service
.diff_stats(
path.space_name,
path.repo_name,
q.base,
q.head,
DiffOptionsDto::default(),
)
.await
.map_err(GitApiError::from)?;
Ok(AppResponseData::ok(out))
}