fn fmt()

in src/ast/ddl.rs [1042:1167]


    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self {
            TableConstraint::Unique {
                name,
                index_name,
                index_type_display,
                index_type,
                columns,
                index_options,
                characteristics,
                nulls_distinct,
            } => {
                write!(
                    f,
                    "{}UNIQUE{nulls_distinct}{index_type_display:>}{}{} ({})",
                    display_constraint_name(name),
                    display_option_spaced(index_name),
                    display_option(" USING ", "", index_type),
                    display_comma_separated(columns),
                )?;

                if !index_options.is_empty() {
                    write!(f, " {}", display_separated(index_options, " "))?;
                }

                write!(f, "{}", display_option_spaced(characteristics))?;
                Ok(())
            }
            TableConstraint::PrimaryKey {
                name,
                index_name,
                index_type,
                columns,
                index_options,
                characteristics,
            } => {
                write!(
                    f,
                    "{}PRIMARY KEY{}{} ({})",
                    display_constraint_name(name),
                    display_option_spaced(index_name),
                    display_option(" USING ", "", index_type),
                    display_comma_separated(columns),
                )?;

                if !index_options.is_empty() {
                    write!(f, " {}", display_separated(index_options, " "))?;
                }

                write!(f, "{}", display_option_spaced(characteristics))?;
                Ok(())
            }
            TableConstraint::ForeignKey {
                name,
                columns,
                foreign_table,
                referred_columns,
                on_delete,
                on_update,
                characteristics,
            } => {
                write!(
                    f,
                    "{}FOREIGN KEY ({}) REFERENCES {}",
                    display_constraint_name(name),
                    display_comma_separated(columns),
                    foreign_table,
                )?;
                if !referred_columns.is_empty() {
                    write!(f, "({})", display_comma_separated(referred_columns))?;
                }
                if let Some(action) = on_delete {
                    write!(f, " ON DELETE {action}")?;
                }
                if let Some(action) = on_update {
                    write!(f, " ON UPDATE {action}")?;
                }
                if let Some(characteristics) = characteristics {
                    write!(f, " {}", characteristics)?;
                }
                Ok(())
            }
            TableConstraint::Check { name, expr } => {
                write!(f, "{}CHECK ({})", display_constraint_name(name), expr)
            }
            TableConstraint::Index {
                display_as_key,
                name,
                index_type,
                columns,
            } => {
                write!(f, "{}", if *display_as_key { "KEY" } else { "INDEX" })?;
                if let Some(name) = name {
                    write!(f, " {name}")?;
                }
                if let Some(index_type) = index_type {
                    write!(f, " USING {index_type}")?;
                }
                write!(f, " ({})", display_comma_separated(columns))?;

                Ok(())
            }
            Self::FulltextOrSpatial {
                fulltext,
                index_type_display,
                opt_index_name,
                columns,
            } => {
                if *fulltext {
                    write!(f, "FULLTEXT")?;
                } else {
                    write!(f, "SPATIAL")?;
                }

                write!(f, "{index_type_display:>}")?;

                if let Some(name) = opt_index_name {
                    write!(f, " {name}")?;
                }

                write!(f, " ({})", display_comma_separated(columns))?;

                Ok(())
            }
        }
    }