ownpg 0.1.1

OwnPG serves PostgreSQL DBA tools to AI clients over the Model Context Protocol, one database and one schema per run
use std::sync::OnceLock;

pub(crate) const ISSUES_URL: &str = "https://github.com/devops-infinity/ownpg-releases/issues/new";

pub(crate) fn version_line() -> &'static str {
    static LINE: OnceLock<String> = OnceLock::new();
    LINE.get_or_init(|| {
        format!(
            "{} (commit {}, built {})",
            env!("CARGO_PKG_VERSION"),
            env!("OWNPG_BUILD_COMMIT"),
            env!("OWNPG_BUILD_DATE")
        )
    })
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn the_version_line_starts_with_the_crate_version_and_carries_the_stamp() {
        let line = version_line();
        assert!(line.starts_with(env!("CARGO_PKG_VERSION")));
        assert!(line.contains("commit "));
        assert!(line.contains("built "));
    }

    #[test]
    fn the_build_date_is_a_calendar_date() {
        let date = env!("OWNPG_BUILD_DATE");
        let widths: Vec<usize> = date.split('-').map(str::len).collect();
        assert_eq!(widths, [4, 2, 2]);
        assert!(date.chars().all(|c| c.is_ascii_digit() || c == '-'));
    }
}