Skip to main content

SQLColumn

Trait SQLColumn 

Source
pub trait SQLColumn<'a, Value: SQLParam + 'a>:
    SQLColumnInfo
    + Default
    + SQLSchema<'a, &'a str, Value>
    + Expr<'a, Value> {
    type Table: SQLTable<'a, Self::TableType, Value>;
    type TableType: SQLSchemaType;
    type ForeignKeys;
    type Type: TryInto<Value>;

    const PRIMARY_KEY: bool = false;
    const NOT_NULL: bool = false;
    const UNIQUE: bool = false;
    const DEFAULT: Option<Self::Type> = None;

    // Provided methods
    fn default_fn(&'a self) -> Option<impl Fn() -> Self::Type> { ... }
    fn placeholder(
        &self,
        name: &'static str,
    ) -> TypedPlaceholder<<Self as Expr<'a, Value>>::SQLType, <Self as Expr<'a, Value>>::Nullable>
       where Self: Sized { ... }
}
Expand description

A table column for the dialect whose value type is Value.

Generated by the table macros for each column. A column is also a typed expression (Expr), so it can be selected, compared and passed to SQL functions.

Provided Associated Constants§

Source

const PRIMARY_KEY: bool = false

Whether the column is part of the primary key.

Source

const NOT_NULL: bool = false

Whether the column is NOT NULL.

Source

const UNIQUE: bool = false

Whether the column has a UNIQUE constraint.

Source

const DEFAULT: Option<Self::Type> = None

The column’s constant default value, if any.

Required Associated Types§

Source

type Table: SQLTable<'a, Self::TableType, Value>

The table the column belongs to.

Source

type TableType: SQLSchemaType

The table’s dialect marker.

Source

type ForeignKeys

The column’s foreign key reference, if any.

Source

type Type: TryInto<Value>

The Rust type of the column’s values.

Provided Methods§

Source

fn default_fn(&'a self) -> Option<impl Fn() -> Self::Type>

The function that computes the column’s default on insert, if any (#[column(default_fn = ...)]).

Source

fn placeholder( &self, name: &'static str, ) -> TypedPlaceholder<<Self as Expr<'a, Value>>::SQLType, <Self as Expr<'a, Value>>::Nullable>
where Self: Sized,

Creates a named placeholder with this column’s SQL type and nullability, for use in prepared statements.

The placeholder only binds values the column could hold. See TypedPlaceholder.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<'a, Value, T> SQLColumn<'a, Value> for &T
where Value: SQLParam + 'a, T: SQLColumn<'a, Value>, for<'r> &'r T: SQLColumnInfo + Default + SQLSchema<'a, &'a str, Value> + Expr<'a, Value>,

Source§

const PRIMARY_KEY: bool = T::PRIMARY_KEY

Source§

const NOT_NULL: bool = T::NOT_NULL

Source§

const UNIQUE: bool = T::UNIQUE

Source§

const DEFAULT: Option<Self::Type> = T::DEFAULT

Source§

type Table = <T as SQLColumn<'a, Value>>::Table

Source§

type TableType = <T as SQLColumn<'a, Value>>::TableType

Source§

type ForeignKeys = <T as SQLColumn<'a, Value>>::ForeignKeys

Source§

type Type = <T as SQLColumn<'a, Value>>::Type

Source§

fn default_fn(&'a self) -> Option<impl Fn() -> Self::Type>

Implementors§