pub const TEMPLATE1: u32 = 1;
pub const TEMPLATE0: u32 = 4;
pub const POSTGRES: u32 = 5;
pub const UNLIMITED: i32 = -1;
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Database {
pub oid: u32,
pub name: String,
pub owner: u32,
pub encoding: i32,
pub locale_provider: u8,
pub is_template: bool,
pub allow_connections: bool,
pub connection_limit: i32,
pub frozen_xid: u32,
pub min_mxid: u32,
pub tablespace: u32,
pub collate: String,
pub ctype: String,
pub locale: Option<String>,
pub icu_rules: Option<String>,
pub collation_version: Option<String>,
pub acl: Option<Vec<String>>,
}
impl Database {
pub fn initdb() -> [Database; 3] {
let acl = Some(vec!["=c/postgres".to_owned(), "postgres=CTc/postgres".to_owned()]);
let row = |oid: u32, name: &str, is_template: bool, allow_connections: bool| Database {
oid,
name: name.to_owned(),
owner: 10,
encoding: 6,
locale_provider: b'c',
is_template,
allow_connections,
connection_limit: UNLIMITED,
frozen_xid: 0,
min_mxid: 1,
tablespace: 1663,
collate: "C".to_owned(),
ctype: "C".to_owned(),
locale: None,
icu_rules: None,
collation_version: None,
acl: if is_template { acl.clone() } else { None },
};
[
row(TEMPLATE1, "template1", true, true),
row(TEMPLATE0, "template0", true, false),
row(POSTGRES, "postgres", false, true),
]
}
}