#postgresql #database-server #embedded-database #server #embedded

postgresql_archive

A library for downloading and extracting PostgreSQL archives

26 releases (8 breaking)

0.9.1 May 1, 2024
0.8.3 Apr 21, 2024
0.7.3 Mar 25, 2024

#948 in Database interfaces

Download history 25/week @ 2024-02-05 449/week @ 2024-02-12 356/week @ 2024-02-19 273/week @ 2024-02-26 349/week @ 2024-03-04 1136/week @ 2024-03-11 324/week @ 2024-03-18 303/week @ 2024-03-25 597/week @ 2024-04-01 244/week @ 2024-04-08 290/week @ 2024-04-15 185/week @ 2024-04-22 453/week @ 2024-04-29 40/week @ 2024-05-06

994 downloads per month
Used in 3 crates (2 directly)

(Apache-2.0 OR MIT) AND PostgreSQL

48KB
774 lines

PostgreSQL Archive

ci Documentation Code Coverage Benchmarks Latest version License Semantic Versioning

A library for downloading and extracting PostgreSQL archives from theseus-rs/postgresql-binaries.

Examples

Asynchronous API

use postgresql_archive::{extract, get_archive, Result, LATEST};

#[tokio::main]
async fn main() -> Result<()> {
    let (archive_version, archive) = get_archive(&LATEST).await?;
    let out_dir = std::env::temp_dir();
    extract(&archive, &out_dir).await
}

Synchronous API

use postgresql_archive::{Result, LATEST};
use postgresql_archive::blocking::{extract, get_archive};

fn main() -> Result<()> {
    let (archive_version, archive) = get_archive(&LATEST)?;
    let out_dir = std::env::temp_dir();
    extract(&archive, &out_dir)
}

Feature flags

postgresql_archive uses [feature flags] to address compile time and binary size uses.

The following features are available:

Name Description Default?
blocking Enables the blocking API No

Supported platforms

postgresql_archive supports all platforms provided by theseus-rs/postgresql-binaries.

Currently supported platforms are:

OS Target
Linux aarch64-unknown-linux-gnu
Linux aarch64-unknown-linux-musl
Linux arm-unknown-linux-gnueabi
Linux arm-unknown-linux-gnueabihf
Linux arm-unknown-linux-musleabi
Linux arm-unknown-linux-musleabihf
Linux armv5te-unknown-linux-gnueabi
Linux armv7-unknown-linux-gnueabihf
Linux armv7-unknown-linux-musleabihf
Linux i586-unknown-linux-gnu
Linux i586-unknown-linux-musl
Linux i686-unknown-linux-gnu
Linux i686-unknown-linux-musl
Linux mips64-unknown-linux-gnuabi64
Linux powerpc64le-unknown-linux-gnu
Linux powerpc64le-unknown-linux-musl
Linux s390x-unknown-linux-gnu
Linux s390x-unknown-linux-musl
Linux x86_64-unknown-linux-gnu
Linux x86_64-unknown-linux-musl
MacOS aarch64-apple-darwin
MacOS x86_64-apple-darwin
Windows x86_64-pc-windows-msvc

Safety

This crate uses #![forbid(unsafe_code)] to ensure everything is implemented in 100% safe Rust.

License

Licensed under either of

at your option.

PostgreSQL is covered under The PostgreSQL License.

Notes

Uses PostgreSQL binaries from theseus-rs/postgresql-binaries.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~11–26MB
~422K SLoC