Improve storage documentation

This commit is contained in:
Alexis Sellier 2023-01-30 14:28:41 +01:00
parent c1a749e09e
commit 050b3acb2e
No known key found for this signature in database
1 changed files with 12 additions and 1 deletions

View File

@ -243,22 +243,28 @@ impl Remote<Verified> {
}
}
/// Read-only operations on a storage instance.
pub trait ReadStorage {
/// Get the storage base path.
fn path(&self) -> &Path;
/// Get an identity document of a repository under a given remote.
fn get(
&self,
remote: &RemoteId,
proj: Id,
rid: Id,
) -> Result<Option<identity::Doc<Verified>>, ProjectError>;
/// Get the inventory of repositories hosted under this storage.
fn inventory(&self) -> Result<Inventory, Error>;
}
/// Allows access to individual storage repositories.
pub trait WriteStorage: ReadStorage {
type Repository: WriteRepository;
fn repository(&self, proj: Id) -> Result<Self::Repository, Error>;
}
/// Allows read-only access to a repository.
pub trait ReadRepository {
/// Return the repository id.
fn id(&self) -> Id;
@ -330,9 +336,14 @@ pub trait ReadRepository {
fn identity_doc(&self) -> Result<(Oid, identity::Doc<Unverified>), ProjectError>;
}
/// Allows read-write access to a repository.
pub trait WriteRepository: ReadRepository {
/// Set the repository head to the canonical branch.
/// This computes the head based on the delegate set.
fn set_head(&self) -> Result<Oid, ProjectError>;
/// Sign the repository's refs under the `refs/rad/sigrefs` branch.
fn sign_refs<G: Signer>(&self, signer: &G) -> Result<SignedRefs<Verified>, Error>;
/// Get the underlying git repository.
fn raw(&self) -> &git2::Repository;
}