1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
use crate::table::{TableColumn, Unquote};
pub trait ForeignKeyName: TableColumn {
fn foreign_key_name<F: TableColumn>(&self, fcol: F) -> String {
let q = if !Self::QUOTE.is_empty() {
Self::QUOTE
} else {
F::QUOTE
};
format!(
"{q}fk_{}_{}_{}_{}{q}",
Self::TABLE.unquoted(),
self.unquoted(),
F::TABLE.unquoted(),
fcol.unquoted()
)
}
}
impl<C> ForeignKeyName for C where C: TableColumn {}