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 {}