Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 2 additions & 10 deletions sea-orm-codegen/src/entity/relation.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
use crate::util::unpack_table_ref;
use heck::{ToSnakeCase, ToUpperCamelCase};
use proc_macro2::{Ident, TokenStream};
use quote::{format_ident, quote};
Expand Down Expand Up @@ -175,14 +174,7 @@ impl Relation {
}

pub fn get_foreign_key_action(action: &ForeignKeyAction) -> String {
match action {
ForeignKeyAction::Restrict => "Restrict",
ForeignKeyAction::Cascade => "Cascade",
ForeignKeyAction::SetNull => "SetNull",
ForeignKeyAction::NoAction => "NoAction",
ForeignKeyAction::SetDefault => "SetDefault",
}
.to_owned()
action.variant_name().to_owned()
}

pub fn get_src_ref_columns<F1, F2, F3, T, I>(
Expand Down Expand Up @@ -219,7 +211,7 @@ impl Relation {
impl From<&TableForeignKey> for Relation {
fn from(tbl_fk: &TableForeignKey) -> Self {
let ref_table = match tbl_fk.get_ref_table() {
Some(s) => unpack_table_ref(s),
Some(s) => s.table().to_string(),
None => panic!("RefTable should not be empty"),
};
let columns = tbl_fk.get_columns();
Expand Down
4 changes: 2 additions & 2 deletions sea-orm-codegen/src/entity/transformer.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::{
ActiveEnum, Column, ConjunctRelation, Entity, EntityWriter, Error, PrimaryKey, Relation,
RelationType, util::unpack_table_ref,
RelationType,
};
use sea_query::{ColumnSpec, TableCreateStatement};
use std::collections::{BTreeMap, HashMap};
Expand Down Expand Up @@ -76,7 +76,7 @@ impl EntityTransformer {
.iter()
.map(|fk_create_stmt| fk_create_stmt.get_foreign_key())
.map(|tbl_fk| {
let ref_tbl = unpack_table_ref(tbl_fk.get_ref_table().unwrap());
let ref_tbl = tbl_fk.get_ref_table().unwrap().table().to_string();
if let Some(count) = ref_table_counts.get_mut(&ref_tbl) {
if *count == 0 {
*count = 1;
Expand Down
16 changes: 0 additions & 16 deletions sea-orm-codegen/src/util.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
use sea_query::TableRef;

pub(crate) fn escape_rust_keyword<T>(string: T) -> String
where
T: ToString,
Expand All @@ -23,17 +21,3 @@ pub(crate) const RUST_KEYWORDS: [&str; 49] = [
];

pub(crate) const RUST_SPECIAL_KEYWORDS: [&str; 3] = ["crate", "Self", "self"];

pub(crate) fn unpack_table_ref(table_ref: &TableRef) -> String {
match table_ref {
TableRef::Table(tbl)
| TableRef::SchemaTable(_, tbl)
| TableRef::DatabaseSchemaTable(_, _, tbl)
| TableRef::TableAlias(tbl, _)
| TableRef::SchemaTableAlias(_, tbl, _)
| TableRef::DatabaseSchemaTableAlias(_, _, tbl, _)
| TableRef::SubQuery(_, tbl)
| TableRef::ValuesList(_, tbl)
| TableRef::FunctionCall(_, tbl) => tbl.to_string(),
}
}
6 changes: 3 additions & 3 deletions sea-orm-migration/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ path = "src/lib.rs"
async-trait = { version = "0.1", default-features = false }
clap = { version = "4.3", features = ["env", "derive"], optional = true }
dotenvy = { version = "0.15", default-features = false, optional = true }
sea-orm = { version = "~1.2.0-rc.1", path = "../", default-features = false, features = ["macros"] }
sea-orm-cli = { version = "~1.2.0-rc.1", path = "../sea-orm-cli", default-features = false, optional = true }
sea-schema = { version = "0.17.0-rc.1", default-features = false, features = ["discovery", "writer", "probe"] }
sea-orm = { version = "~1.2.0-rc", path = "../", default-features = false, features = ["macros"] }
sea-orm-cli = { version = "~1.2.0-rc", path = "../sea-orm-cli", default-features = false, optional = true }
sea-schema = { version = "0.17.0-rc.2", default-features = false, features = ["discovery", "writer", "probe"] }
tracing = { version = "0.1", default-features = false, features = ["log"] }
tracing-subscriber = { version = "0.3.17", default-features = false, features = ["env-filter", "fmt"] }

Expand Down
4 changes: 2 additions & 2 deletions sea-orm-migration/src/migrator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ use std::time::SystemTime;
use tracing::info;

use sea_orm::sea_query::{
self, Alias, Expr, ForeignKey, IntoIden, JoinType, Order, Query, SelectStatement, SimpleExpr,
Table, extension::postgres::Type,
self, Alias, Expr, ExprTrait, ForeignKey, IntoIden, JoinType, Order, Query, SelectStatement,
SimpleExpr, Table, extension::postgres::Type,
};
use sea_orm::{
ActiveModelTrait, ActiveValue, Condition, ConnectionTrait, DbBackend, DbErr, DeriveIden,
Expand Down
1 change: 1 addition & 0 deletions src/database/stream/query.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ impl std::fmt::Debug for QueryStream {
}

impl QueryStream {
#[allow(dead_code)]
#[instrument(level = "trace", skip(metric_callback))]
pub(crate) fn build(
stmt: Statement,
Expand Down
12 changes: 3 additions & 9 deletions src/entity/column.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1026,11 +1026,9 @@ mod tests {
use crate::{ActiveModelTrait, ActiveValue, Update};

mod hello_expanded {
use sea_query::ExprTrait;

use crate as sea_orm;
use crate::entity::prelude::*;
use crate::sea_query::{Expr, SimpleExpr};
use crate::sea_query::{Expr, ExprTrait, SimpleExpr};

#[derive(Copy, Clone, Default, Debug, DeriveEntity)]
pub struct Entity;
Expand Down Expand Up @@ -1159,11 +1157,9 @@ mod tests {
use crate::{ActiveModelTrait, ActiveValue, Update};

mod hello_expanded {
use sea_query::ExprTrait;

use crate as sea_orm;
use crate::entity::prelude::*;
use crate::sea_query::{Expr, SimpleExpr};
use crate::sea_query::{Expr, ExprTrait, SimpleExpr};

#[derive(Copy, Clone, Default, Debug, DeriveEntity)]
pub struct Entity;
Expand Down Expand Up @@ -1292,11 +1288,9 @@ mod tests {
use crate::{ActiveModelTrait, ActiveValue, Update};

mod hello_expanded {
use sea_query::ExprTrait;

use crate as sea_orm;
use crate::entity::prelude::*;
use crate::sea_query::{Expr, SimpleExpr};
use crate::sea_query::{Expr, ExprTrait, SimpleExpr};

#[derive(Copy, Clone, Default, Debug, DeriveEntity)]
pub struct Entity;
Expand Down
6 changes: 2 additions & 4 deletions src/entity/link.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
use crate::{
EntityTrait, QuerySelect, RelationDef, Select, join_tbl_on_condition, unpack_table_ref,
};
use crate::{EntityTrait, QuerySelect, RelationDef, Select, join_tbl_on_condition};
use sea_query::{Alias, Condition, IntoIden, JoinType, SeaRc};

/// Same as [RelationDef]
Expand All @@ -25,7 +23,7 @@ pub trait Linked {
let to_tbl = if i > 0 {
Alias::new(format!("r{}", i - 1)).into_iden()
} else {
unpack_table_ref(&rel.to_tbl)
rel.to_tbl.table().clone()
};
let table_ref = rel.from_tbl;

Expand Down
25 changes: 12 additions & 13 deletions src/entity/relation.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use crate::{
EntityTrait, Identity, IdentityOf, Iterable, QuerySelect, Select, join_tbl_on_condition,
unpack_table_alias, unpack_table_ref,
};
use core::marker::PhantomData;
use sea_query::{
Expand Down Expand Up @@ -140,13 +139,13 @@ fn debug_on_condition(
impl IntoCondition for RelationDef {
fn into_condition(mut self) -> Condition {
// Use table alias (if any) to construct the join condition
let from_tbl = match unpack_table_alias(&self.from_tbl) {
let from_tbl = match self.from_tbl.table_alias() {
Some(alias) => alias,
None => unpack_table_ref(&self.from_tbl),
None => self.from_tbl.table(),
};
let to_tbl = match unpack_table_alias(&self.to_tbl) {
let to_tbl = match self.to_tbl.table_alias() {
Some(alias) => alias,
None => unpack_table_ref(&self.to_tbl),
None => self.to_tbl.table(),
};
let owner_keys = self.from_col;
let foreign_keys = self.to_col;
Expand All @@ -157,13 +156,13 @@ impl IntoCondition for RelationDef {
};

condition = condition.add(join_tbl_on_condition(
SeaRc::clone(&from_tbl),
SeaRc::clone(&to_tbl),
SeaRc::clone(from_tbl),
SeaRc::clone(to_tbl),
owner_keys,
foreign_keys,
));
if let Some(f) = self.on_condition.take() {
condition = condition.add(f(from_tbl, to_tbl));
condition = condition.add(f(from_tbl.clone(), to_tbl.clone()));
}

condition
Expand Down Expand Up @@ -498,7 +497,7 @@ macro_rules! set_foreign_key_stmt {
let name = if let Some(name) = $relation.fk_name {
name
} else {
let from_tbl = unpack_table_ref(&$relation.from_tbl);
let from_tbl = &$relation.from_tbl.table().clone();
format!("fk-{}-{}", from_tbl.to_string(), from_cols.join("-"))
};
$foreign_key.name(&name);
Expand All @@ -510,8 +509,8 @@ impl From<RelationDef> for ForeignKeyCreateStatement {
let mut foreign_key_stmt = Self::new();
set_foreign_key_stmt!(relation, foreign_key_stmt);
foreign_key_stmt
.from_tbl(unpack_table_ref(&relation.from_tbl))
.to_tbl(unpack_table_ref(&relation.to_tbl))
.from_tbl(relation.from_tbl.table().clone())
.to_tbl(relation.to_tbl.table().clone())
.take()
}
}
Expand Down Expand Up @@ -548,8 +547,8 @@ impl From<RelationDef> for TableForeignKey {
let mut foreign_key = Self::new();
set_foreign_key_stmt!(relation, foreign_key);
foreign_key
.from_tbl(unpack_table_ref(&relation.from_tbl))
.to_tbl(unpack_table_ref(&relation.to_tbl))
.from_tbl(relation.from_tbl.table().clone())
.to_tbl(relation.to_tbl.table().clone())
.take()
}
}
Expand Down
20 changes: 8 additions & 12 deletions src/query/combine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use crate::{
SelectTwoMany,
};
use core::marker::PhantomData;
use sea_query::{Alias, ColumnRef, Iden, Order, SeaRc, SelectExpr, SelectStatement, SimpleExpr};
use sea_query::{Alias, Iden, Order, SeaRc, SelectExpr, SelectStatement, SimpleExpr};

macro_rules! select_def {
( $ident: ident, $str: expr ) => {
Expand Down Expand Up @@ -42,20 +42,16 @@ where
}
None => {
let col = match &sel.expr {
SimpleExpr::Column(col_ref) => match &col_ref {
ColumnRef::Column(col)
| ColumnRef::TableColumn(_, col)
| ColumnRef::SchemaTableColumn(_, _, col) => col,
ColumnRef::Asterisk | ColumnRef::TableAsterisk(_) => {
panic!("cannot apply alias for Column with asterisk")
SimpleExpr::Column(col_ref) => match col_ref.column() {
Some(col) => col,
None => {
panic!("cannot apply alias for Column with asterisk");
}
},
SimpleExpr::AsEnum(_, simple_expr) => match simple_expr.as_ref() {
SimpleExpr::Column(col_ref) => match &col_ref {
ColumnRef::Column(col)
| ColumnRef::TableColumn(_, col)
| ColumnRef::SchemaTableColumn(_, _, col) => col,
ColumnRef::Asterisk | ColumnRef::TableAsterisk(_) => {
SimpleExpr::Column(col_ref) => match col_ref.column() {
Some(col) => col,
None => {
panic!("cannot apply alias for AsEnum with asterisk")
}
},
Expand Down
30 changes: 1 addition & 29 deletions src/query/helper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use crate::{
};
use sea_query::{
Alias, Expr, ExprTrait, Iden, IntoCondition, IntoIden, LockBehavior, LockType, NullOrdering,
SeaRc, SelectExpr, SelectStatement, SimpleExpr, TableRef,
SeaRc, SelectExpr, SelectStatement, SimpleExpr,
};
pub use sea_query::{Condition, ConditionalStatement, DynIden, JoinType, Order, OrderedStatement};

Expand Down Expand Up @@ -874,31 +874,3 @@ pub(crate) fn join_tbl_on_condition(
}
cond
}

pub(crate) fn unpack_table_ref(table_ref: &TableRef) -> DynIden {
match table_ref {
TableRef::Table(tbl)
| TableRef::SchemaTable(_, tbl)
| TableRef::DatabaseSchemaTable(_, _, tbl)
| TableRef::TableAlias(tbl, _)
| TableRef::SchemaTableAlias(_, tbl, _)
| TableRef::DatabaseSchemaTableAlias(_, _, tbl, _)
| TableRef::SubQuery(_, tbl)
| TableRef::ValuesList(_, tbl)
| TableRef::FunctionCall(_, tbl) => SeaRc::clone(tbl),
}
}

pub(crate) fn unpack_table_alias(table_ref: &TableRef) -> Option<DynIden> {
match table_ref {
TableRef::Table(_)
| TableRef::SchemaTable(_, _)
| TableRef::DatabaseSchemaTable(_, _, _)
| TableRef::SubQuery(_, _)
| TableRef::ValuesList(_, _) => None,
TableRef::TableAlias(_, alias)
| TableRef::SchemaTableAlias(_, _, alias)
| TableRef::DatabaseSchemaTableAlias(_, _, _, alias)
| TableRef::FunctionCall(_, alias) => Some(SeaRc::clone(alias)),
}
}
6 changes: 3 additions & 3 deletions src/query/join.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::{
ColumnTrait, EntityTrait, IdenStatic, Iterable, Linked, QuerySelect, Related, Select, SelectA,
SelectB, SelectThree, SelectTwo, SelectTwoMany, join_tbl_on_condition, unpack_table_ref,
SelectB, SelectThree, SelectTwo, SelectTwoMany, join_tbl_on_condition,
};
pub use sea_query::JoinType;
use sea_query::{Alias, Condition, Expr, IntoIden, SeaRc, SelectExpr};
Expand Down Expand Up @@ -74,7 +74,7 @@ where
let from_tbl = if i > 0 {
Alias::new(format!("r{}", i - 1)).into_iden()
} else {
unpack_table_ref(&rel.from_tbl)
rel.from_tbl.table().clone()
};
let table_ref = rel.to_tbl;

Expand Down Expand Up @@ -120,7 +120,7 @@ where
let from_tbl = if i > 0 {
Alias::new(format!("r{}", i - 1)).into_iden()
} else {
unpack_table_ref(&rel.from_tbl)
rel.from_tbl.table().clone()
};
let table_ref = rel.to_tbl;

Expand Down
1 change: 1 addition & 0 deletions src/query/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,4 @@ pub use crate::{
ConnectionTrait, CursorTrait, InsertResult, PaginatorTrait, Statement, StreamTrait,
TransactionTrait, UpdateResult, Value, Values,
};
pub use sea_query::ExprTrait;
7 changes: 3 additions & 4 deletions tests/active_enum_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@ use pretty_assertions::assert_eq;
#[cfg(feature = "sqlx-postgres")]
use sea_orm::QueryTrait;
use sea_orm::{
ActiveEnum as ActiveEnumTrait, DatabaseConnection, FromQueryResult, QuerySelect,
entity::prelude::*,
ActiveEnum as ActiveEnumTrait, DatabaseConnection, DbErr, FromQueryResult, QueryFilter,
QuerySelect,
entity::*,
sea_query::{BinOper, Expr},
sea_query::{BinOper, Expr, ExprTrait},
};
use sea_query::ExprTrait;

#[sea_orm_macros::test]
async fn main() -> Result<(), DbErr> {
Expand Down
Loading