Skip to main content

InsertStatement

Struct InsertStatement 

Source
pub struct InsertStatement { /* private fields */ }
Expand description

INSERT statement builder

This struct provides a fluent API for constructing INSERT queries.

§Examples

use reinhardt_query::prelude::*;

let query = Query::insert()
    .into_table("users")
    .columns(["name", "email"])
    .values_panic(["Alice", "alice@example.com"])
    .values_panic(["Bob", "bob@example.com"]);

Implementations§

Source§

impl InsertStatement

Source

pub fn new() -> Self

Create a new INSERT statement

Source

pub fn take(&mut self) -> Self

Take the ownership of data in the current InsertStatement

Source

pub fn into_table<T>(&mut self, tbl: T) -> &mut Self
where T: IntoTableRef,

Set the table to insert into

§Examples
use reinhardt_query::prelude::*;

let query = Query::insert()
    .into_table("users");
Source

pub fn column<C>(&mut self, col: C) -> &mut Self
where C: IntoIden,

Add a column to insert into

§Examples
use reinhardt_query::prelude::*;

let query = Query::insert()
    .into_table("users")
    .column("name")
    .column("email");
Source

pub fn columns<I, C>(&mut self, cols: I) -> &mut Self
where I: IntoIterator<Item = C>, C: IntoIden,

Add multiple columns to insert into

§Examples
use reinhardt_query::prelude::*;

let query = Query::insert()
    .into_table("users")
    .columns(["name", "email", "created_at"]);
Source

pub fn values(&mut self, values: Vec<Value>) -> Result<&mut Self, String>

Add values for the columns

Returns Err if the number of values doesn’t match the number of columns.

§Examples
use reinhardt_query::prelude::*;

let result = Query::insert()
    .into_table("users")
    .columns(["name", "email"])
    .values(vec!["Alice".into(), "alice@example.com".into()]);
Source

pub fn values_panic<I, V>(&mut self, values: I) -> &mut Self
where I: IntoIterator<Item = V>, V: IntoValue,

Add values for the columns (panics on mismatch)

§Panics

Panics if the number of values doesn’t match the number of columns.

§Examples
use reinhardt_query::prelude::*;

let query = Query::insert()
    .into_table("users")
    .columns(["name", "email"])
    .values_panic(["Alice", "alice@example.com"])
    .values_panic(["Bob", "bob@example.com"]);
Source

pub fn returning<I, C>(&mut self, cols: I) -> &mut Self
where I: IntoIterator<Item = C>, C: IntoColumnRef,

Add a RETURNING clause with multiple columns

§Examples
use reinhardt_query::prelude::*;

let query = Query::insert()
    .into_table("users")
    .columns(["name", "email"])
    .values_panic(["Alice", "alice@example.com"])
    .returning(["id", "created_at"]);
Source

pub fn returning_col<C>(&mut self, col: C) -> &mut Self
where C: IntoColumnRef,

Add a RETURNING clause for a single column

§Examples
use reinhardt_query::prelude::*;

let query = Query::insert()
    .into_table("users")
    .columns(["name"])
    .values_panic(["Alice"])
    .returning_col(Alias::new("id"));
Source

pub fn on_conflict(&mut self, on_conflict: OnConflict) -> &mut Self

Set ON CONFLICT clause for upsert behavior.

§Examples
use reinhardt_query::prelude::*;
use reinhardt_query::query::OnConflict;

let query = Query::insert()
    .into_table("users")
    .columns(["id", "name"])
    .values_panic([1, "Alice"])
    .on_conflict(OnConflict::column("id").update_columns(["name"]));
Source

pub fn returning_all(&mut self) -> &mut Self

Add a RETURNING * clause

§Examples
use reinhardt_query::prelude::*;

let query = Query::insert()
    .into_table("users")
    .columns(["name", "email"])
    .values_panic(["Alice", "alice@example.com"])
    .returning_all();
Source

pub fn from_subquery(&mut self, select: SelectStatement) -> &mut Self

Use a subquery as the data source for INSERT

§Examples
use reinhardt_query::prelude::*;

let select = Query::select()
    .column("name")
    .column("email")
    .from("temp_users");

let query = Query::insert()
    .into_table("users")
    .columns(["name", "email"])
    .from_subquery(select);
Source

pub fn get_values(&self) -> Option<&Vec<Vec<Value>>>

Get the values if this is a VALUES source

Returns None if the source is a subquery.

Trait Implementations§

Source§

impl Clone for InsertStatement

Source§

fn clone(&self) -> InsertStatement

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for InsertStatement

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for InsertStatement

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl QueryStatementBuilder for InsertStatement

Source§

fn build_any(&self, query_builder: &dyn QueryBuilderTrait) -> (String, Values)

Build SQL statement for a database backend and collect query parameters Read more
Source§

fn to_string<T: QueryBuilderTrait>(&self, query_builder: T) -> String

Build SQL statement for a database backend and return SQL string with values inlined as SQL literals. Read more
Source§

fn build<T: QueryBuilderTrait>(&self, query_builder: T) -> (String, Values)

Build SQL statement with parameter collection Read more
Source§

impl QueryStatementWriter for InsertStatement

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.