from_raw_sql example
This commit is contained in:
parent
2dc8401c53
commit
25432e68d0
@ -1,6 +1,6 @@
|
|||||||
use crate::DbBackend;
|
use crate::DbBackend;
|
||||||
use sea_query::{
|
use sea_query::{
|
||||||
inject_parameters, MysqlQueryBuilder, PostgresQueryBuilder, SqliteQueryBuilder, Values,
|
inject_parameters, MysqlQueryBuilder, PostgresQueryBuilder, SqliteQueryBuilder, Value, Values
|
||||||
};
|
};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
@ -24,7 +24,17 @@ impl Statement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_string_values_tuple(
|
pub fn from_sql_and_values<I>(db_backend: DbBackend, sql: &str, values: I) -> Self
|
||||||
|
where
|
||||||
|
I: IntoIterator<Item = Value>,
|
||||||
|
{
|
||||||
|
Self::from_string_values_tuple(
|
||||||
|
db_backend,
|
||||||
|
(sql.to_owned(), Values(values.into_iter().collect())),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) fn from_string_values_tuple(
|
||||||
db_backend: DbBackend,
|
db_backend: DbBackend,
|
||||||
stmt: (String, Values),
|
stmt: (String, Values),
|
||||||
) -> Statement {
|
) -> Statement {
|
||||||
|
@ -76,7 +76,50 @@ impl<E> Select<E>
|
|||||||
where
|
where
|
||||||
E: EntityTrait,
|
E: EntityTrait,
|
||||||
{
|
{
|
||||||
pub fn from_raw_sql(stmt: Statement) -> SelectorRaw<SelectModel<E::Model>> {
|
/// ```
|
||||||
|
/// # #[cfg(feature = "mock")]
|
||||||
|
/// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, DbBackend};
|
||||||
|
/// #
|
||||||
|
/// # let db = MockDatabase::new(DbBackend::Postgres)
|
||||||
|
/// # .append_query_results(vec![
|
||||||
|
/// # vec![
|
||||||
|
/// # cake::Model {
|
||||||
|
/// # id: 1,
|
||||||
|
/// # name: "New York Cheese".to_owned(),
|
||||||
|
/// # },
|
||||||
|
/// # ],
|
||||||
|
/// # ])
|
||||||
|
/// # .into_connection();
|
||||||
|
/// #
|
||||||
|
/// use sea_orm::{entity::*, query::*, tests_cfg::cake};
|
||||||
|
///
|
||||||
|
/// # let _: Result<(), DbErr> = async_std::task::block_on(async {
|
||||||
|
/// #
|
||||||
|
/// assert_eq!(
|
||||||
|
/// cake::Entity::find().from_raw_sql(
|
||||||
|
/// Statement::from_sql_and_values(
|
||||||
|
/// DbBackend::Postgres, r#"SELECT "cake"."id", "cake"."name" FROM "cake""#, vec![]
|
||||||
|
/// )
|
||||||
|
/// ).one(&db).await?,
|
||||||
|
/// Some(cake::Model {
|
||||||
|
/// id: 1,
|
||||||
|
/// name: "New York Cheese".to_owned(),
|
||||||
|
/// })
|
||||||
|
/// );
|
||||||
|
/// #
|
||||||
|
/// # Ok(())
|
||||||
|
/// # });
|
||||||
|
///
|
||||||
|
/// assert_eq!(
|
||||||
|
/// db.into_transaction_log(),
|
||||||
|
/// vec![
|
||||||
|
/// Transaction::from_sql_and_values(
|
||||||
|
/// DbBackend::Postgres, r#"SELECT "cake"."id", "cake"."name" FROM "cake""#, vec![]
|
||||||
|
/// ),
|
||||||
|
/// ]);
|
||||||
|
/// ```
|
||||||
|
#[allow(clippy::wrong_self_convention)]
|
||||||
|
pub fn from_raw_sql(self, stmt: Statement) -> SelectorRaw<SelectModel<E::Model>> {
|
||||||
SelectorRaw {
|
SelectorRaw {
|
||||||
stmt,
|
stmt,
|
||||||
selector: SelectModel { model: PhantomData },
|
selector: SelectModel { model: PhantomData },
|
||||||
|
@ -20,4 +20,4 @@ pub use select::*;
|
|||||||
pub use traits::*;
|
pub use traits::*;
|
||||||
pub use update::*;
|
pub use update::*;
|
||||||
|
|
||||||
pub use crate::executor::{InsertResult, UpdateResult};
|
pub use crate::{Statement, InsertResult, UpdateResult};
|
Loading…
x
Reference in New Issue
Block a user