Files
gitks/server/remote.rs
T
zhenyi 66afd932ed feat(api): extend commit and diff services with new functionality
- Add FindCommit, ListCommitsByOid, CommitIsAncestor RPCs to CommitService
- Add CheckObjectsExist, CommitsByMessage, GetCommitStats RPCs to CommitService
- Add LastCommitForPath, CountCommits, CountDivergingCommits RPCs to CommitService
- Add RawDiff, RawPatch, FindChangedPaths RPCs to DiffService
- Add FindMergeBase, WriteRef, SearchFilesByContent RPCs to RepositoryService
- Add SearchFilesByName, ObjectsSize, RepositorySize RPCs to RepositoryService
- Add FindLicense, OptimizeRepository, GetRawChanges RPCs to RepositoryService
- Add FetchRemote, CreateRepositoryFromURL RPCs to RepositoryService
- Implement server handlers for all new RPC methods
- Add new modules for commit counting, finding, and querying features
- Add new modules for diff changed paths and raw operations
- Add new modules for refs and remote operations
- Remove unnecessary comments from various source files
- Update proto definitions with new message types and service methods
2026-06-08 15:37:08 +08:00

44 lines
1.8 KiB
Rust

use crate::pb::*;
use crate::pb::remote_service_server::RemoteService;
use crate::remote::find_remote::{find_remote_repository, find_remote_root_ref};
use super::GitksService;
#[tonic::async_trait]
impl RemoteService for GitksService {
async fn find_remote_repository(
&self,
request: tonic::Request<FindRemoteRepositoryRequest>,
) -> Result<tonic::Response<FindRemoteRepositoryResponse>, tonic::Status> {
let m = crate::metrics::RequestMetrics::new("gitks.RemoteService/FindRemoteRepository");
let inner = request.into_inner();
let resp = find_remote_repository(inner).map_err(super::into_status)?;
m.record("ok");
Ok(tonic::Response::new(resp))
}
async fn find_remote_root_ref(
&self,
request: tonic::Request<FindRemoteRootRefRequest>,
) -> Result<tonic::Response<FindRemoteRootRefResponse>, tonic::Status> {
let m = crate::metrics::RequestMetrics::new("gitks.RemoteService/FindRemoteRootRef");
let inner = request.into_inner();
let resp = find_remote_root_ref(inner).map_err(super::into_status)?;
m.record("ok");
Ok(tonic::Response::new(resp))
}
async fn update_remote_mirror(
&self,
request: tonic::Request<UpdateRemoteMirrorRequest>,
) -> Result<tonic::Response<UpdateRemoteMirrorResponse>, tonic::Status> {
let m = crate::metrics::RequestMetrics::new("gitks.RemoteService/UpdateRemoteMirror");
let inner = request.into_inner();
let _rate = self.acquire_rate_limit(inner.repository.as_ref()).await?;
let gb = self.resolve(inner.repository.as_ref())?;
let resp = gb.update_remote_mirror(inner).map_err(super::into_status)?;
m.record("ok");
Ok(tonic::Response::new(resp))
}
}