Skip to main content

PostgresBackend

Struct PostgresBackend 

Source
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

Source

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.

Source

pub fn public_base_url(&self) -> &str

Returns the public base URL used in generated download links.

Source§

impl PostgresBackend

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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

Source

pub async fn stats(&self) -> Result<ServerStatsResponse, ServerError>

Returns backend storage stats.

§Errors

Returns ServerError when metadata inventory cannot be loaded.

Source§

impl PostgresBackend

Source

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.

Source

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

Source§

fn clone(&self) -> PostgresBackend

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PostgresBackend

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ServiceExt for T

Source§

fn follow_redirects(self) -> FollowRedirect<Self>
where Self: Sized,

Follow redirect resposes using the Standard policy. Read more
Source§

fn override_request_header<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Insert a header into the request. Read more
Source§

fn append_request_header<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Append a header into the request. Read more
Source§

fn insert_request_header_if_not_present<M>( self, header_name: HeaderName, make: M, ) -> SetRequestHeader<Self, M>
where Self: Sized,

Insert a header into the request, if the header is not already present. Read more
Source§

fn override_response_header<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Insert a header into the response. Read more
Source§

fn append_response_header<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Append a header into the response. Read more
Source§

fn insert_response_header_if_not_present<M>( self, header_name: HeaderName, make: M, ) -> SetResponseHeader<Self, M>
where Self: Sized,

Insert a header into the response, if the header is not already present. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more