use crate::catalog::{DependsOn, id::DbObjectId};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CollationProvider {
Libc,
Icu,
Builtin,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CollationRef {
pub schema: String,
pub name: String,
}
impl CollationRef {
pub fn id(&self) -> DbObjectId {
DbObjectId::Collation {
schema: self.schema.clone(),
name: self.name.clone(),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Collation {
pub schema: String,
pub name: String,
pub provider: CollationProvider,
pub deterministic: bool,
pub locale: Option<String>,
pub lc_collate: Option<String>,
pub lc_ctype: Option<String>,
pub rules: Option<String>,
pub comment: Option<String>,
pub depends_on: Vec<DbObjectId>,
}
impl Collation {
pub fn id(&self) -> DbObjectId {
DbObjectId::Collation {
schema: self.schema.clone(),
name: self.name.clone(),
}
}
}
impl DependsOn for Collation {
fn id(&self) -> DbObjectId {
self.id()
}
fn depends_on(&self) -> &[DbObjectId] {
&self.depends_on
}
}