Skip to main content

mesa_dev/client/
sync.rs

1use crate::low_level::apis::{repos_api, Error};
2use crate::models;
3
4use super::RepoClient;
5
6/// Client for sync operations (`/{org}/{repo}/sync`).
7#[derive(Clone, Debug)]
8pub struct SyncClient<'a> {
9    pub(super) repo: &'a RepoClient<'a>,
10}
11
12impl SyncClient<'_> {
13    /// Get sync status with upstream.
14    ///
15    /// # Errors
16    ///
17    /// Returns an error if the API request fails.
18    pub async fn status(
19        &self,
20    ) -> Result<models::GetByOrgByRepoSync200Response, Error<repos_api::GetByOrgByRepoSyncError>>
21    {
22        repos_api::get_by_org_by_repo_sync(self.repo.org.config, self.repo.org.org, self.repo.repo)
23            .await
24    }
25
26    /// Trigger a sync from the upstream repository (waits for completion).
27    ///
28    /// # Errors
29    ///
30    /// Returns an error if the API request fails.
31    pub async fn trigger(
32        &self,
33    ) -> Result<models::DeleteByOrgApiKeysById200Response, Error<repos_api::PostByOrgByRepoSyncError>>
34    {
35        repos_api::post_by_org_by_repo_sync(self.repo.org.config, self.repo.org.org, self.repo.repo)
36            .await
37    }
38}