pub struct PostgresBackend { /* private fields */ }Expand description
Server backend that keeps file metadata in Postgres and object bytes in the selected store.
Implementations§
Source§impl PostgresBackend
impl PostgresBackend
Sourcepub async fn new(
root: PathBuf,
public_base_url: String,
chunk_size: NonZeroUsize,
index_postgres_url: &str,
) -> Result<Self, ServerError>
pub async fn new( root: PathBuf, public_base_url: String, chunk_size: NonZeroUsize, index_postgres_url: &str, ) -> Result<Self, ServerError>
Creates a Postgres-backed metadata backend.
§Errors
Returns ServerError when the local chunk store cannot initialize or the
Postgres pool configuration is invalid.
Sourcepub fn public_base_url(&self) -> &str
pub fn public_base_url(&self) -> &str
Returns the public base URL used in generated download links.
Source§impl PostgresBackend
impl PostgresBackend
Sourcepub async fn ready(&self) -> Result<(), ServerError>
pub async fn ready(&self) -> Result<(), ServerError>
Verifies that the local object store and required Postgres metadata tables are reachable.
§Errors
Returns ServerError when local chunk storage is unreadable, the Postgres
pool cannot execute queries, or required metadata tables are missing.
Sourcepub async fn reconstruction(
&self,
file_id: &str,
content_hash: Option<&str>,
requested_range: Option<ByteRange>,
repository_scope: Option<&RepositoryScope>,
) -> Result<FileReconstructionResponse, ServerError>
pub async fn reconstruction( &self, file_id: &str, content_hash: Option<&str>, requested_range: Option<ByteRange>, repository_scope: Option<&RepositoryScope>, ) -> Result<FileReconstructionResponse, ServerError>
Loads reconstruction metadata for a file.
§Errors
Returns ServerError when the file identifier is invalid or the record is
missing or unreadable.
Sourcepub async fn file_total_bytes(
&self,
file_id: &str,
content_hash: Option<&str>,
repository_scope: Option<&RepositoryScope>,
) -> Result<u64, ServerError>
pub async fn file_total_bytes( &self, file_id: &str, content_hash: Option<&str>, repository_scope: Option<&RepositoryScope>, ) -> Result<u64, ServerError>
Loads the logical byte length for a file version.
§Errors
Returns ServerError when the file identifier is invalid or the record is
missing or unreadable.
Sourcepub async fn download_file(
&self,
file_id: &str,
content_hash: Option<&str>,
repository_scope: Option<&RepositoryScope>,
) -> Result<Vec<u8>, ServerError>
pub async fn download_file( &self, file_id: &str, content_hash: Option<&str>, repository_scope: Option<&RepositoryScope>, ) -> Result<Vec<u8>, ServerError>
Reconstructs a file into a contiguous byte vector.
§Errors
Returns ServerError when metadata or chunk bytes cannot be read.
Sourcepub async fn read_chunk(&self, hash_hex: &str) -> Result<Vec<u8>, ServerError>
pub async fn read_chunk(&self, hash_hex: &str) -> Result<Vec<u8>, ServerError>
Reads a stored chunk by hash.
§Errors
Returns ServerError when the hash is invalid or the chunk is missing.
Sourcepub async fn chunk_length(&self, hash_hex: &str) -> Result<u64, ServerError>
pub async fn chunk_length(&self, hash_hex: &str) -> Result<u64, ServerError>
Loads the stored byte length for a chunk object.
§Errors
Returns ServerError when the hash is invalid or the chunk is missing.
Sourcepub async fn read_chunk_for_file_version(
&self,
hash_hex: &str,
file_id: &str,
content_hash: &str,
repository_scope: Option<&RepositoryScope>,
) -> Result<Vec<u8>, ServerError>
pub async fn read_chunk_for_file_version( &self, hash_hex: &str, file_id: &str, content_hash: &str, repository_scope: Option<&RepositoryScope>, ) -> Result<Vec<u8>, ServerError>
Reads a stored chunk only when it is reachable from a concrete file version.
§Errors
Returns ServerError when the hash, file identifier, or content hash are
invalid, when the file version is missing, or when the chunk is not referenced
by that version.
Sourcepub async fn xorb_length(&self, hash_hex: &str) -> Result<u64, ServerError>
pub async fn xorb_length(&self, hash_hex: &str) -> Result<u64, ServerError>
Loads the stored byte length for a serialized xorb object.
§Errors
Returns ServerError when the hash is invalid or the xorb is missing.
Source§impl PostgresBackend
impl PostgresBackend
Sourcepub async fn stats(&self) -> Result<ServerStatsResponse, ServerError>
pub async fn stats(&self) -> Result<ServerStatsResponse, ServerError>
Returns backend storage stats.
§Errors
Returns ServerError when metadata inventory cannot be loaded.
Source§impl PostgresBackend
impl PostgresBackend
Sourcepub async fn upload_file(
&self,
file_id: &str,
body: Bytes,
repository_scope: Option<&RepositoryScope>,
) -> Result<UploadFileResponse, ServerError>
pub async fn upload_file( &self, file_id: &str, body: Bytes, repository_scope: Option<&RepositoryScope>, ) -> Result<UploadFileResponse, ServerError>
Stores a file version as deduplicated content chunks.
§Errors
Returns ServerError when file identifier validation, chunk persistence, or
metadata persistence fails.
Sourcepub async fn upload_xorb(
&self,
expected_hash: &str,
body: Bytes,
) -> Result<XorbUploadResponse, ServerError>
pub async fn upload_xorb( &self, expected_hash: &str, body: Bytes, ) -> Result<XorbUploadResponse, ServerError>
Stores a raw xorb body under its content hash.
§Errors
Returns ServerError when the supplied hash is invalid, the body hash does not
match, or persistence fails.
Trait Implementations§
Source§impl Clone for PostgresBackend
impl Clone for PostgresBackend
Source§fn clone(&self) -> PostgresBackend
fn clone(&self) -> PostgresBackend
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for PostgresBackend
impl !UnwindSafe for PostgresBackend
impl Freeze for PostgresBackend
impl Send for PostgresBackend
impl Sync for PostgresBackend
impl Unpin for PostgresBackend
impl UnsafeUnpin for PostgresBackend
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more