Skip to main content

pg_ephemeral/
lib.rs

1pub mod certificate;
2pub mod cli;
3pub mod config;
4pub mod container;
5pub mod definition;
6pub mod image;
7pub mod seed;
8
9pub use config::{Config, Instance};
10pub use container::Container;
11pub use definition::Definition;
12pub use image::Image;
13pub use seed::Command;
14pub use seed::CommandCacheConfig;
15pub use seed::DuplicateSeedName;
16pub use seed::LoadError;
17pub use seed::Seed;
18pub use seed::SeedName;
19pub use seed::SeedNameError;
20
21pub(crate) const VERSION_STR: &str = env!("CARGO_PKG_VERSION");
22pub(crate) const LOCALHOST_IP: std::net::IpAddr =
23    std::net::IpAddr::V4(std::net::Ipv4Addr::LOCALHOST);
24pub(crate) const UNSPECIFIED_IP: std::net::IpAddr =
25    std::net::IpAddr::V4(std::net::Ipv4Addr::UNSPECIFIED);
26pub(crate) const LOCALHOST_HOST_ADDR: pg_client::config::HostAddr =
27    pg_client::config::HostAddr::new(LOCALHOST_IP);
28pub(crate) const ENV_DATABASE_URL: cmd_proc::EnvVariableName =
29    cmd_proc::EnvVariableName::from_static_or_panic("DATABASE_URL");
30
31#[must_use]
32pub fn version() -> &'static semver::Version {
33    static VERSION: std::sync::LazyLock<semver::Version> =
34        std::sync::LazyLock::new(|| semver::Version::parse(VERSION_STR).unwrap());
35    &VERSION
36}
37
38pub(crate) fn convert_schema(value: &[u8]) -> String {
39    std::str::from_utf8(value)
40        .expect("schema contains invalid utf8")
41        .to_string()
42}
43
44#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd, serde::Deserialize)]
45pub struct InstanceName(pub String);
46
47impl std::default::Default for InstanceName {
48    fn default() -> Self {
49        Self("main".to_string())
50    }
51}
52
53impl std::str::FromStr for InstanceName {
54    type Err = std::convert::Infallible;
55
56    fn from_str(value: &str) -> Result<Self, Self::Err> {
57        Ok(Self(value.into()))
58    }
59}
60
61impl std::fmt::Display for InstanceName {
62    fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
63        write!(formatter, "{}", self.0)
64    }
65}
66
67pub type InstanceMap = std::collections::BTreeMap<InstanceName, config::Instance>;