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

postgresql_archive

A library for downloading and extracting PostgreSQL archives

48 releases (16 breaking)

0.17.3 Nov 12, 2024
0.17.0 Sep 28, 2024
0.14.2 Jul 17, 2024
0.7.3 Mar 25, 2024

#1266 in Database interfaces

Download history 811/week @ 2024-08-22 1027/week @ 2024-08-29 615/week @ 2024-09-05 664/week @ 2024-09-12 670/week @ 2024-09-19 1314/week @ 2024-09-26 839/week @ 2024-10-03 645/week @ 2024-10-10 674/week @ 2024-10-17 639/week @ 2024-10-24 954/week @ 2024-10-31 839/week @ 2024-11-07 867/week @ 2024-11-14 726/week @ 2024-11-21 529/week @ 2024-11-28 529/week @ 2024-12-05

2,841 downloads per month
Used in 6 crates (2 directly)

(Apache-2.0 OR MIT) AND PostgreSQL

110KB
2.5K SLoC

PostgreSQL Archive

ci Documentation Code Coverage Benchmarks Latest version License Semantic Versioning

A configurable library for downloading and extracting PostgreSQL archives.

Examples

Asynchronous API

use postgresql_archive::{extract, get_archive, Result, VersionReq};
use postgresql_archive::configuration::theseus;

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

Synchronous API

use postgresql_archive::configuration::theseus;
use postgresql_archive::{Result, VersionReq};
use postgresql_archive::blocking::{extract, get_archive};

fn main() -> Result<()> {
    let url = theseus::URL;
    let (archive_version, archive) = get_archive(url, &VersionReq::STAR)?;
    let out_dir = std::env::temp_dir();
    extract(url, &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
native-tls Enables native-tls support Yes
rustls-tls Enables rustls-tls support No

Configurations

Name Description Default?
theseus Enables theseus PostgreSQL binaries Yes
zonky Enables zonky PostgreSQL binaries No

Hashers

Name Description Default?
md5 Enables md5 hashers No
sha1 Enables sha1 hashers No
sha2 Enables sha2 hashers Yes¹

¹ enabled by the theseus feature flag.

Repositories

Name Description Default?
github Enables github repository Yes¹
maven Enables maven repository No

¹ enabled by the theseus feature flag.

Supported platforms

postgresql_archive provides implementations for the following:

Safety

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

License

Licensed under either of

at your option.

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

~22–38MB
~596K SLoC