pub struct Select<E>where
E: EntityTrait,{ /* private fields */ }Expand description
Defines a structure to perform select operations
Implementations§
Source§impl<E, M> Select<E>
impl<E, M> Select<E>
Sourcepub fn cursor_by<C>(self, order_columns: C) -> Cursor<SelectModel<M>>where
C: IntoIdentity,
pub fn cursor_by<C>(self, order_columns: C) -> Cursor<SelectModel<M>>where
C: IntoIdentity,
Convert into a cursor
Source§impl<E> Select<E>where
E: EntityTrait,
impl<E> Select<E>where
E: EntityTrait,
Sourcepub fn from_raw_sql(
self,
stmt: Statement,
) -> SelectorRaw<SelectModel<<E as EntityTrait>::Model>>
pub fn from_raw_sql( self, stmt: Statement, ) -> SelectorRaw<SelectModel<<E as EntityTrait>::Model>>
Perform a Select operation on a Model using a Statement
Sourcepub fn into_model<M>(self) -> Selector<SelectModel<M>>where
M: FromQueryResult,
pub fn into_model<M>(self) -> Selector<SelectModel<M>>where
M: FromQueryResult,
Return a Selector from Self that wraps a SelectModel
Sourcepub fn into_partial_model<M>(self) -> Selector<SelectModel<M>>where
M: PartialModelTrait,
pub fn into_partial_model<M>(self) -> Selector<SelectModel<M>>where
M: PartialModelTrait,
Return a Selector from Self that wraps a SelectModel with a PartialModel
use sea_orm::{
entity::*,
query::*,
tests_cfg::cake::{self, Entity as Cake},
DbBackend, DerivePartialModel, FromQueryResult,
};
use sea_query::{Expr, Func, SimpleExpr};
#[derive(DerivePartialModel, FromQueryResult)]
#[sea_orm(entity = "Cake")]
struct PartialCake {
name: String,
#[sea_orm(
from_expr = r#"SimpleExpr::FunctionCall(Func::upper(Expr::col((Cake, cake::Column::Name))))"#
)]
name_upper: String,
}
assert_eq!(
cake::Entity::find()
.into_partial_model::<PartialCake>()
.into_statement(DbBackend::Sqlite)
.to_string(),
r#"SELECT "cake"."name" AS "name", UPPER("cake"."name") AS "name_upper" FROM "cake""#
);Sourcepub fn into_json(self) -> Selector<SelectModel<Value>>
pub fn into_json(self) -> Selector<SelectModel<Value>>
Get a selectable Model as a JsonValue for SQL JSON operations
Sourcepub fn into_values<T, C>(self) -> Selector<SelectGetableValue<T, C>>
pub fn into_values<T, C>(self) -> Selector<SelectGetableValue<T, C>>
use sea_orm::{entity::*, query::*, tests_cfg::cake, DeriveColumn, EnumIter};
#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)]
enum QueryAs {
CakeName,
}
let res: Vec<String> = cake::Entity::find()
.select_only()
.column_as(cake::Column::Name, QueryAs::CakeName)
.into_values::<_, QueryAs>()
.all(&db)
.await?;
assert_eq!(
res,
["Chocolate Forest".to_owned(), "New York Cheese".to_owned()]
);
assert_eq!(
db.into_transaction_log(),
[Transaction::from_sql_and_values(
DbBackend::Postgres,
r#"SELECT "cake"."name" AS "cake_name" FROM "cake""#,
[]
)]
);use sea_orm::{entity::*, query::*, tests_cfg::cake, DeriveColumn, EnumIter};
#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)]
enum QueryAs {
CakeName,
NumOfCakes,
}
let res: Vec<(String, i64)> = cake::Entity::find()
.select_only()
.column_as(cake::Column::Name, QueryAs::CakeName)
.column_as(cake::Column::Id.count(), QueryAs::NumOfCakes)
.group_by(cake::Column::Name)
.into_values::<_, QueryAs>()
.all(&db)
.await?;
assert_eq!(res, [("Chocolate Forest".to_owned(), 2i64)]);
assert_eq!(
db.into_transaction_log(),
[Transaction::from_sql_and_values(
DbBackend::Postgres,
[
r#"SELECT "cake"."name" AS "cake_name", COUNT("cake"."id") AS "num_of_cakes""#,
r#"FROM "cake" GROUP BY "cake"."name""#,
]
.join(" ")
.as_str(),
[]
)]
);Sourcepub fn into_tuple<T>(self) -> Selector<SelectGetableTuple<T>>where
T: TryGetableMany,
pub fn into_tuple<T>(self) -> Selector<SelectGetableTuple<T>>where
T: TryGetableMany,
use sea_orm::{entity::*, query::*, tests_cfg::cake};
let res: Vec<String> = cake::Entity::find()
.select_only()
.column(cake::Column::Name)
.into_tuple()
.all(&db)
.await?;
assert_eq!(
res,
vec!["Chocolate Forest".to_owned(), "New York Cheese".to_owned()]
);
assert_eq!(
db.into_transaction_log(),
vec![Transaction::from_sql_and_values(
DbBackend::Postgres,
r#"SELECT "cake"."name" FROM "cake""#,
vec![]
)]
);use sea_orm::{entity::*, query::*, tests_cfg::cake};
let res: Vec<(String, i64)> = cake::Entity::find()
.select_only()
.column(cake::Column::Name)
.column(cake::Column::Id)
.group_by(cake::Column::Name)
.into_tuple()
.all(&db)
.await?;
assert_eq!(res, vec![("Chocolate Forest".to_owned(), 2i64)]);
assert_eq!(
db.into_transaction_log(),
vec![Transaction::from_sql_and_values(
DbBackend::Postgres,
vec![
r#"SELECT "cake"."name", "cake"."id""#,
r#"FROM "cake" GROUP BY "cake"."name""#,
]
.join(" ")
.as_str(),
vec![]
)]
);Sourcepub async fn one<C>(
self,
db: &C,
) -> Result<Option<<E as EntityTrait>::Model>, DbErr>where
C: ConnectionTrait,
pub async fn one<C>(
self,
db: &C,
) -> Result<Option<<E as EntityTrait>::Model>, DbErr>where
C: ConnectionTrait,
Get one Model from the SELECT query
Sourcepub async fn all<C>(
self,
db: &C,
) -> Result<Vec<<E as EntityTrait>::Model>, DbErr>where
C: ConnectionTrait,
pub async fn all<C>(
self,
db: &C,
) -> Result<Vec<<E as EntityTrait>::Model>, DbErr>where
C: ConnectionTrait,
Get all Models from the SELECT query
Sourcepub async fn stream<'a, 'b, C>(
self,
db: &'a C,
) -> Result<impl Stream<Item = Result<<E as EntityTrait>::Model, DbErr>> + Send + 'b, DbErr>
pub async fn stream<'a, 'b, C>( self, db: &'a C, ) -> Result<impl Stream<Item = Result<<E as EntityTrait>::Model, DbErr>> + Send + 'b, DbErr>
Stream the results of a SELECT operation on a Model
Source§impl<E> Select<E>where
E: EntityTrait,
impl<E> Select<E>where
E: EntityTrait,
Sourcepub fn select_also<F>(self, _: F) -> SelectTwo<E, F>where
F: EntityTrait,
pub fn select_also<F>(self, _: F) -> SelectTwo<E, F>where
F: EntityTrait,
Selects extra Entity and returns it together with the Entity from Self
Sourcepub fn select_with<F>(self, _: F) -> SelectTwoMany<E, F>where
F: EntityTrait,
pub fn select_with<F>(self, _: F) -> SelectTwoMany<E, F>where
F: EntityTrait,
Makes a SELECT operation in conjunction to another relation
Source§impl<E> Select<E>where
E: EntityTrait,
impl<E> Select<E>where
E: EntityTrait,
Sourcepub fn left_join<R>(self, _: R) -> Select<E>where
R: EntityTrait,
E: Related<R>,
pub fn left_join<R>(self, _: R) -> Select<E>where
R: EntityTrait,
E: Related<R>,
Left Join with a Related Entity.
Sourcepub fn right_join<R>(self, _: R) -> Select<E>where
R: EntityTrait,
E: Related<R>,
pub fn right_join<R>(self, _: R) -> Select<E>where
R: EntityTrait,
E: Related<R>,
Right Join with a Related Entity.
Sourcepub fn inner_join<R>(self, _: R) -> Select<E>where
R: EntityTrait,
E: Related<R>,
pub fn inner_join<R>(self, _: R) -> Select<E>where
R: EntityTrait,
E: Related<R>,
Inner Join with a Related Entity.
Sourcepub fn reverse_join<R>(self, _: R) -> Select<E>where
R: EntityTrait + Related<E>,
pub fn reverse_join<R>(self, _: R) -> Select<E>where
R: EntityTrait + Related<E>,
Join with an Entity Related to me.
Left Join with a Related Entity and select both Entity.
Left Join with a Related Entity and select the related Entity as a Vec
Sourcepub fn find_also_linked<L, T>(self, l: L) -> SelectTwo<E, T>where
L: Linked<FromEntity = E, ToEntity = T>,
T: EntityTrait,
pub fn find_also_linked<L, T>(self, l: L) -> SelectTwo<E, T>where
L: Linked<FromEntity = E, ToEntity = T>,
T: EntityTrait,
Left Join with a Linked Entity and select both Entity.
Sourcepub fn find_with_linked<L, T>(self, l: L) -> SelectTwoMany<E, T>where
L: Linked<FromEntity = E, ToEntity = T>,
T: EntityTrait,
pub fn find_with_linked<L, T>(self, l: L) -> SelectTwoMany<E, T>where
L: Linked<FromEntity = E, ToEntity = T>,
T: EntityTrait,
Left Join with a Linked Entity and select Entity as a Vec.
Trait Implementations§
Source§impl<E, M> CursorTrait for Select<E>
impl<E, M> CursorTrait for Select<E>
Source§type Selector = SelectModel<M>
type Selector = SelectModel<M>
Source§impl<E> EntityOrSelect<E> for Select<E>where
E: EntityTrait,
impl<E> EntityOrSelect<E> for Select<E>where
E: EntityTrait,
Source§impl<'db, C, M, E> PaginatorTrait<'db, C> for Select<E>
impl<'db, C, M, E> PaginatorTrait<'db, C> for Select<E>
Source§impl<E> QueryFilter for Select<E>where
E: EntityTrait,
impl<E> QueryFilter for Select<E>where
E: EntityTrait,
type QueryStatement = SelectStatement
Source§fn query(&mut self) -> &mut SelectStatement
fn query(&mut self) -> &mut SelectStatement
Source§fn filter<F>(self, filter: F) -> Selfwhere
F: IntoCondition,
fn filter<F>(self, filter: F) -> Selfwhere
F: IntoCondition,
Source§fn belongs_to<M>(self, model: &M) -> Selfwhere
M: ModelTrait,
fn belongs_to<M>(self, model: &M) -> Selfwhere
M: ModelTrait,
Source§fn belongs_to_tbl_alias<M>(self, model: &M, tbl_alias: &str) -> Selfwhere
M: ModelTrait,
fn belongs_to_tbl_alias<M>(self, model: &M, tbl_alias: &str) -> Selfwhere
M: ModelTrait,
Source§impl<E> QueryOrder for Select<E>where
E: EntityTrait,
impl<E> QueryOrder for Select<E>where
E: EntityTrait,
type QueryStatement = SelectStatement
Source§fn query(&mut self) -> &mut SelectStatement
fn query(&mut self) -> &mut SelectStatement
Source§fn order_by<C>(self, col: C, ord: Order) -> Selfwhere
C: IntoSimpleExpr,
fn order_by<C>(self, col: C, ord: Order) -> Selfwhere
C: IntoSimpleExpr,
Source§fn order_by_asc<C>(self, col: C) -> Selfwhere
C: IntoSimpleExpr,
fn order_by_asc<C>(self, col: C) -> Selfwhere
C: IntoSimpleExpr,
Source§fn order_by_desc<C>(self, col: C) -> Selfwhere
C: IntoSimpleExpr,
fn order_by_desc<C>(self, col: C) -> Selfwhere
C: IntoSimpleExpr,
Source§fn order_by_with_nulls<C>(self, col: C, ord: Order, nulls: NullOrdering) -> Selfwhere
C: IntoSimpleExpr,
fn order_by_with_nulls<C>(self, col: C, ord: Order, nulls: NullOrdering) -> Selfwhere
C: IntoSimpleExpr,
Source§impl<E> QuerySelect for Select<E>where
E: EntityTrait,
impl<E> QuerySelect for Select<E>where
E: EntityTrait,
type QueryStatement = SelectStatement
Source§fn query(&mut self) -> &mut SelectStatement
fn query(&mut self) -> &mut SelectStatement
Source§fn select_only(self) -> Self
fn select_only(self) -> Self
Source§fn column<C>(self, col: C) -> Selfwhere
C: ColumnTrait,
fn column<C>(self, col: C) -> Selfwhere
C: ColumnTrait,
Source§fn column_as<C, I>(self, col: C, alias: I) -> Selfwhere
C: ColumnAsExpr,
I: IntoIdentity,
fn column_as<C, I>(self, col: C, alias: I) -> Selfwhere
C: ColumnAsExpr,
I: IntoIdentity,
Source§fn columns<C, I>(self, cols: I) -> Selfwhere
C: ColumnTrait,
I: IntoIterator<Item = C>,
fn columns<C, I>(self, cols: I) -> Selfwhere
C: ColumnTrait,
I: IntoIterator<Item = C>,
Source§fn offset<T>(self, offset: T) -> Self
fn offset<T>(self, offset: T) -> Self
Source§fn limit<T>(self, limit: T) -> Self
fn limit<T>(self, limit: T) -> Self
Source§fn group_by<C>(self, col: C) -> Selfwhere
C: IntoSimpleExpr,
fn group_by<C>(self, col: C) -> Selfwhere
C: IntoSimpleExpr,
Source§fn having<F>(self, filter: F) -> Selfwhere
F: IntoCondition,
fn having<F>(self, filter: F) -> Selfwhere
F: IntoCondition,
Source§fn distinct_on<T, I>(self, cols: I) -> Selfwhere
T: IntoColumnRef,
I: IntoIterator<Item = T>,
fn distinct_on<T, I>(self, cols: I) -> Selfwhere
T: IntoColumnRef,
I: IntoIterator<Item = T>,
sqlx-postgres Read moreSource§fn join(self, join: JoinType, rel: RelationDef) -> Self
fn join(self, join: JoinType, rel: RelationDef) -> Self
RelationDef.Source§fn join_rev(self, join: JoinType, rel: RelationDef) -> Self
fn join_rev(self, join: JoinType, rel: RelationDef) -> Self
RelationDef but in reverse direction.
Assume when there exist a relation A to B.
You can reverse join B from A.Source§fn join_as<I>(self, join: JoinType, rel: RelationDef, alias: I) -> Selfwhere
I: IntoIden,
fn join_as<I>(self, join: JoinType, rel: RelationDef, alias: I) -> Selfwhere
I: IntoIden,
RelationDef with table alias.Source§fn join_as_rev<I>(self, join: JoinType, rel: RelationDef, alias: I) -> Selfwhere
I: IntoIden,
fn join_as_rev<I>(self, join: JoinType, rel: RelationDef, alias: I) -> Selfwhere
I: IntoIden,
RelationDef with table alias but in reverse direction.
Assume when there exist a relation A to B.
You can reverse join B from A.Source§fn lock_exclusive(self) -> Self
fn lock_exclusive(self) -> Self
Source§fn lock_with_behavior(self, type: LockType, behavior: LockBehavior) -> Self
fn lock_with_behavior(self, type: LockType, behavior: LockBehavior) -> Self
Source§fn expr<T>(self, expr: T) -> Selfwhere
T: Into<SelectExpr>,
fn expr<T>(self, expr: T) -> Selfwhere
T: Into<SelectExpr>,
Source§fn exprs<T, I>(self, exprs: I) -> Self
fn exprs<T, I>(self, exprs: I) -> Self
SelectExpr. Read moreSource§fn expr_as_<T, A>(self, expr: T, alias: A) -> Self
fn expr_as_<T, A>(self, expr: T, alias: A) -> Self
expr_as. Here for legacy reasons. Read moreSource§fn tbl_col_as<T, C, A>(self, _: (T, C), alias: A) -> Self
fn tbl_col_as<T, C, A>(self, _: (T, C), alias: A) -> Self
expr_as(Expr::col((T, C)), A). Read moreSource§impl<E> QueryTrait for Select<E>where
E: EntityTrait,
impl<E> QueryTrait for Select<E>where
E: EntityTrait,
Source§type QueryStatement = SelectStatement
type QueryStatement = SelectStatement
Source§fn query(&mut self) -> &mut SelectStatement
fn query(&mut self) -> &mut SelectStatement
Source§fn as_query(&self) -> &SelectStatement
fn as_query(&self) -> &SelectStatement
Source§fn into_query(self) -> SelectStatement
fn into_query(self) -> SelectStatement
Auto Trait Implementations§
impl<E> Freeze for Select<E>
impl<E> !RefUnwindSafe for Select<E>
impl<E> Send for Select<E>
impl<E> Sync for Select<E>
impl<E> Unpin for Select<E>where
E: Unpin,
impl<E> !UnwindSafe for Select<E>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);