pub struct PgFetchSettings {
pub host: String,
pub operating_system: OperationSystem,
pub architecture: Architecture,
pub version: PostgresVersion,
}Expand description
Settings that determine which PostgreSQL binary package to download.
Construct with Default::default and override individual fields as
needed:
use pg_embed::pg_fetch::{PgFetchSettings, PG_V17};
let settings = PgFetchSettings {
version: PG_V17,
..Default::default()
};The default target OS and architecture are detected at compile time via
#[cfg(target_os)] / #[cfg(target_arch)].
Fields§
§host: StringBase URL of the Maven repository hosting the binaries.
Defaults to https://repo1.maven.org. Override to point at a local
mirror or artifact proxy.
operating_system: OperationSystemTarget operating system. Determines the package classifier used in the Maven artifact name.
architecture: ArchitectureTarget CPU architecture. Combined with Self::operating_system to
form the Maven classifier.
version: PostgresVersionPostgreSQL version to download. Use one of the PG_Vxx constants.
Implementations§
Source§impl PgFetchSettings
impl PgFetchSettings
Sourcepub fn platform(&self) -> String
pub fn platform(&self) -> String
Returns the Maven classifier string for this OS/architecture combination.
The classifier is the middle segment of the artifact name, e.g.
linux-amd64 or darwin-amd64. For Alpine Linux the architecture
gets an -alpine suffix instead of a separate OS segment.
§Returns
A String of the form {os}-{arch} (or {os}-{arch}-alpine for
OperationSystem::AlpineLinux).
Sourcepub async fn fetch_postgres(&self) -> Result<Vec<u8>>
pub async fn fetch_postgres(&self) -> Result<Vec<u8>>
Downloads the PostgreSQL binaries JAR from Maven Central.
Constructs the full artifact URL from Self::host, Self::platform,
and Self::version, performs an HTTP GET, and returns the raw bytes of
the JAR file. The caller is responsible for persisting and unpacking the
data (see crate::pg_unpack::unpack_postgres).
Prefer Self::fetch_postgres_to_file when the bytes will be written
to disk — it streams directly without buffering the entire archive in
memory.
§Returns
The raw bytes of the downloaded JAR on success.
§Errors
Returns Error::DownloadFailure if the HTTP request fails or the
server returns a non-2xx status (e.g. 404 when the requested
PostgreSQL version is not available for the current platform).
Returns Error::ConversionFailure if reading the response body fails.
Trait Implementations§
Source§impl Clone for PgFetchSettings
impl Clone for PgFetchSettings
Source§fn clone(&self) -> PgFetchSettings
fn clone(&self) -> PgFetchSettings
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PgFetchSettings
impl Debug for PgFetchSettings
Auto Trait Implementations§
impl Freeze for PgFetchSettings
impl RefUnwindSafe for PgFetchSettings
impl Send for PgFetchSettings
impl Sync for PgFetchSettings
impl Unpin for PgFetchSettings
impl UnsafeUnpin for PgFetchSettings
impl UnwindSafe for PgFetchSettings
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