Skip to main content

ToSQL

Trait ToSQL 

Source
pub trait ToSQL<'a, V>
where V: SQLParam,
{ // Required method fn to_sql(&self) -> SQL<'a, V>; // Provided method fn into_sql(self) -> SQL<'a, V> where Self: Sized { ... } }
Expand description

Something that renders as a SQL fragment for the value type V.

Columns, tables, expressions, query builders and plain Rust values all implement it. Rust values (i64, &str, Option<T>, …) render as bound parameters, None renders as NULL, and lists (Vec<T>, arrays, slices) render as comma-separated items. 'a lets the fragment borrow its inputs instead of copying them.

§Examples

Rendering a custom type:

use drizzle_core::{SQL, ToSQL};

struct Now;

impl<'a> ToSQL<'a, Value> for Now {
    fn to_sql(&self) -> SQL<'a, Value> {
        SQL::raw("CURRENT_TIMESTAMP")
    }
}

assert_eq!(Now.to_sql().sql(), "CURRENT_TIMESTAMP");

Required Methods§

Source

fn to_sql(&self) -> SQL<'a, V>

Renders self as a SQL fragment.

Provided Methods§

Source

fn into_sql(self) -> SQL<'a, V>
where Self: Sized,

Renders self as a SQL fragment, consuming it.

The default calls to_sql. Types that already hold a fragment (such as SQL and SQLExpr) override it to avoid a clone.

Dyn Compatibility§

This trait is dyn compatible.

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

Implementations on Foreign Types§

Source§

impl<'a, V, T0, T1, T2, T3, T4, T5, T6, T7> ToSQL<'a, V> for (T0, T1, T2, T3, T4, T5, T6, T7)
where V: SQLParam, T0: ToSQL<'a, V>, T1: ToSQL<'a, V>, T2: ToSQL<'a, V>, T3: ToSQL<'a, V>, T4: ToSQL<'a, V>, T5: ToSQL<'a, V>, T6: ToSQL<'a, V>, T7: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T0, T1, T2, T3, T4, T5, T6> ToSQL<'a, V> for (T0, T1, T2, T3, T4, T5, T6)
where V: SQLParam, T0: ToSQL<'a, V>, T1: ToSQL<'a, V>, T2: ToSQL<'a, V>, T3: ToSQL<'a, V>, T4: ToSQL<'a, V>, T5: ToSQL<'a, V>, T6: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T0, T1, T2, T3, T4, T5> ToSQL<'a, V> for (T0, T1, T2, T3, T4, T5)
where V: SQLParam, T0: ToSQL<'a, V>, T1: ToSQL<'a, V>, T2: ToSQL<'a, V>, T3: ToSQL<'a, V>, T4: ToSQL<'a, V>, T5: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T0, T1, T2, T3, T4> ToSQL<'a, V> for (T0, T1, T2, T3, T4)
where V: SQLParam, T0: ToSQL<'a, V>, T1: ToSQL<'a, V>, T2: ToSQL<'a, V>, T3: ToSQL<'a, V>, T4: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T0, T1, T2, T3> ToSQL<'a, V> for (T0, T1, T2, T3)
where V: SQLParam, T0: ToSQL<'a, V>, T1: ToSQL<'a, V>, T2: ToSQL<'a, V>, T3: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T0, T1, T2> ToSQL<'a, V> for (T0, T1, T2)
where V: SQLParam, T0: ToSQL<'a, V>, T1: ToSQL<'a, V>, T2: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T0, T1> ToSQL<'a, V> for (T0, T1)
where V: SQLParam, T0: ToSQL<'a, V>, T1: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T0> ToSQL<'a, V> for (T0,)
where V: SQLParam, T0: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T, const N: usize> ToSQL<'a, V> for [T; N]
where V: SQLParam + 'a, T: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T> ToSQL<'a, V> for &'a [T]
where V: SQLParam + 'a, T: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T> ToSQL<'a, V> for &T
where V: SQLParam, T: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T> ToSQL<'a, V> for Arc<T>
where V: SQLParam + 'a, T: ToSQL<'a, V>,

Available on crate features alloc or std only.
Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T> ToSQL<'a, V> for Box<T>
where V: SQLParam + 'a, T: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T> ToSQL<'a, V> for Option<T>
where V: SQLParam + 'a, T: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T> ToSQL<'a, V> for Rc<T>
where V: SQLParam + 'a, T: ToSQL<'a, V>,

Available on crate features alloc or std only.
Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V, T> ToSQL<'a, V> for Vec<T>
where V: SQLParam + 'a, T: ToSQL<'a, V>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for &'a str
where V: SQLParam + 'a + From<&'a str> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for ()
where V: SQLParam + 'a,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for Arc<str>
where V: SQLParam + 'a + From<String> + Into<Cow<'a, V>>,

Available on crate features alloc or std only.
Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for Box<str>
where V: SQLParam + 'a + From<String> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

fn into_sql(self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for Cow<'a, [u8]>
where V: SQLParam + 'a + From<&'a [u8]> + From<Vec<u8>> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

fn into_sql(self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for Cow<'a, str>
where V: SQLParam + 'a + From<&'a str> + From<String> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

fn into_sql(self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for Rc<str>
where V: SQLParam + 'a + From<String> + Into<Cow<'a, V>>,

Available on crate features alloc or std only.
Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for String
where V: SQLParam + 'a + From<String> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

fn into_sql(self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for bool
where V: SQLParam + 'a + From<bool> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for char
where V: SQLParam + 'a + From<char> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for f32
where V: SQLParam + 'a + From<f32> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for f64
where V: SQLParam + 'a + From<f64> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for i8
where V: SQLParam + 'a + From<i8> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for i16
where V: SQLParam + 'a + From<i16> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for i32
where V: SQLParam + 'a + From<i32> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for i64
where V: SQLParam + 'a + From<i64> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for isize
where V: SQLParam + 'a + From<isize> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for u8
where V: SQLParam + 'a + From<u8> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for u16
where V: SQLParam + 'a + From<u16> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for u32
where V: SQLParam + 'a + From<u32> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for u64
where V: SQLParam + 'a + From<u64> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Source§

impl<'a, V> ToSQL<'a, V> for usize
where V: SQLParam + 'a + From<usize> + Into<Cow<'a, V>>,

Source§

fn to_sql(&self) -> SQL<'a, V>

Implementors§

Source§

impl<'a, Schema, State, Table, Marker, Row, Grouped> ToSQL<'a, PostgresValue<'a>> for QueryBuilder<'a, Schema, State, Table, Marker, Row, Grouped>

Source§

impl<'a, State> ToSQL<'a, PostgresValue<'a>> for RefreshMaterializedView<'a, State>

Source§

impl<'a, T> ToSQL<'a, PostgresValue<'a>> for PgArray<T>
where T: Into<PostgresValue<'a>> + Clone,

Source§

impl<'a, V, C> ToSQL<'a, V> for Excluded<C>

Source§

impl<'a, V, E, Name> ToSQL<'a, V> for NamedExpr<E, Name>
where V: SQLParam + 'a, E: ToSQL<'a, V>, Name: Tag,

Source§

impl<'a, V, E> ToSQL<'a, V> for AliasedExpr<E>
where V: SQLParam + 'a, E: ToSQL<'a, V>,

Source§

impl<'a, V, Lhs, Rhs, Op, D, SQLType, Nullable> ToSQL<'a, V> for ColumnBinOp<Lhs, Rhs, Op, D, SQLType, Nullable>
where V: SQLParam, Lhs: ToSQL<'a, V>, Rhs: ToSQL<'a, V>, Op: BinOpToken,

Source§

impl<'a, V, Name, Output> ToSQL<'a, V> for DerivedField<Name, Output>
where V: SQLParam, Name: Tag, Output: ProjectionOutput,

Source§

impl<'a, V, Name, Projection, Query> ToSQL<'a, V> for Derived<'a, V, Name, Projection, Query>
where V: SQLParam, Name: Tag, Query: ToSQL<'a, V>,

Source§

impl<'a, V, S> ToSQL<'a, V> for Ordered<'a, V, S>
where V: SQLParam,

Source§

impl<'a, V, T, D, SQLType, Nullable> ToSQL<'a, V> for ColumnNeg<T, D, SQLType, Nullable>
where V: SQLParam, T: ToSQL<'a, V>,

Source§

impl<'a, V, T, N, A, S> ToSQL<'a, V> for SQLExpr<'a, V, T, N, A, S>

Source§

impl<'a, V, T, N> ToSQL<'a, V> for TypedPlaceholder<T, N>
where V: SQLParam + 'a, T: DataType, N: Nullability,

Source§

impl<'a, V, Table, Query> ToSQL<'a, V> for CTEView<'a, V, Table, Query>
where V: SQLParam, Query: ToSQL<'a, V>,

Source§

impl<'a, V> ToSQL<'a, V> for ColumnRef
where V: SQLParam + 'a,

Source§

impl<'a, V> ToSQL<'a, V> for Join
where V: SQLParam + 'a,

Source§

impl<'a, V> ToSQL<'a, V> for OrderBy
where V: SQLParam + 'a,

Renders ASC or DESC.

Source§

impl<'a, V> ToSQL<'a, V> for OwnedPreparedStatement<V>
where V: SQLParam,

Source§

impl<'a, V> ToSQL<'a, V> for Placeholder
where V: SQLParam + 'a,

Source§

impl<'a, V> ToSQL<'a, V> for PreparedStatement<'a, V>
where V: SQLParam,

Source§

impl<'a, V> ToSQL<'a, V> for SQL<'a, V>
where V: SQLParam + 'a,

Source§

impl<'a, V> ToSQL<'a, V> for SQLBytes<'a>
where V: SQLParam + 'a + From<&'a [u8]> + From<Vec<u8>> + Into<Cow<'a, V>>,

Source§

impl<'a, V> ToSQL<'a, V> for SQLNull
where V: SQLParam + 'a,

Source§

impl<'a, V> ToSQL<'a, V> for TableRef
where V: SQLParam + 'a,

Source§

impl<V> ToSQL<'static, V> for OwnedSQL<V>
where V: SQLParam,