diff --git a/Cargo.toml b/Cargo.toml index 3db574bb..387d27d1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ chrono = { version = "^0", optional = true } futures = { version = "^0.3" } futures-util = { version = "^0.3" } rust_decimal = { version = "^1", optional = true } -sea-orm-macros = { version = "^0.1.1", optional = true } +sea-orm-macros = { version = "^0.1.1", path = "sea-orm-macros", optional = true } sea-query = { version = "^0.16", features = ["thread-safe"] } sea-strum = { version = "^0.21", features = ["derive", "sea-orm"] } serde = { version = "^1.0", features = ["derive"] } @@ -40,6 +40,7 @@ sqlx-core = { version = "^0.5", optional = true } sqlx-macros = { version = "^0.5", optional = true } serde_json = { version = "^1", optional = true } uuid = { version = "0.8", features = ["serde", "v4"], optional = true } +log = { version = "^0.4", optional = true } [dev-dependencies] smol = { version = "^1.2" } @@ -49,11 +50,12 @@ tokio = { version = "^1.6", features = ["full"] } actix-rt = { version = "2.2.0" } maplit = { version = "^1" } rust_decimal_macros = { version = "^1" } +env_logger = { version = "^0.9" } sea-orm = { path = ".", features = ["debug-print"] } pretty_assertions = { version = "^0.7" } [features] -debug-print = [] +debug-print = ["log"] default = [ "macros", "mock", diff --git a/sea-orm-macros/src/lib.rs b/sea-orm-macros/src/lib.rs index a2217aa8..a9abf8b2 100644 --- a/sea-orm-macros/src/lib.rs +++ b/sea-orm-macros/src/lib.rs @@ -99,6 +99,10 @@ pub fn test(_: TokenStream, input: TokenStream) -> TokenStream { #[test] #(#attrs)* fn #name() #ret { + let _ = ::env_logger::builder() + .filter_level(::log::LevelFilter::Debug) + .is_test(true) + .try_init(); crate::block_on!(async { #body }) } ) diff --git a/src/driver/mock.rs b/src/driver/mock.rs index 0a1629bf..823ddb32 100644 --- a/src/driver/mock.rs +++ b/src/driver/mock.rs @@ -2,19 +2,22 @@ use crate::{ debug_print, error::*, DatabaseConnection, DbBackend, ExecResult, MockDatabase, QueryResult, Statement, Transaction, }; +use std::fmt::Debug; use std::sync::{ atomic::{AtomicUsize, Ordering}, Mutex, }; +#[derive(Debug)] pub struct MockDatabaseConnector; +#[derive(Debug)] pub struct MockDatabaseConnection { counter: AtomicUsize, mocker: Mutex>, } -pub trait MockDatabaseTrait: Send { +pub trait MockDatabaseTrait: Send + Debug { fn execute(&mut self, counter: usize, stmt: Statement) -> Result; fn query(&mut self, counter: usize, stmt: Statement) -> Result, DbErr>; diff --git a/src/driver/sqlx_mysql.rs b/src/driver/sqlx_mysql.rs index 48da88a0..e91df037 100644 --- a/src/driver/sqlx_mysql.rs +++ b/src/driver/sqlx_mysql.rs @@ -10,8 +10,10 @@ use crate::{debug_print, error::*, executor::*, DatabaseConnection, Statement}; use super::sqlx_common::*; +#[derive(Debug)] pub struct SqlxMySqlConnector; +#[derive(Debug)] pub struct SqlxMySqlPoolConnection { pool: MySqlPool, } diff --git a/src/driver/sqlx_postgres.rs b/src/driver/sqlx_postgres.rs index b3d71f9a..086dc995 100644 --- a/src/driver/sqlx_postgres.rs +++ b/src/driver/sqlx_postgres.rs @@ -10,8 +10,10 @@ use crate::{debug_print, error::*, executor::*, DatabaseConnection, Statement}; use super::sqlx_common::*; +#[derive(Debug)] pub struct SqlxPostgresConnector; +#[derive(Debug)] pub struct SqlxPostgresPoolConnection { pool: PgPool, } diff --git a/src/driver/sqlx_sqlite.rs b/src/driver/sqlx_sqlite.rs index ac275b72..5fa4bdcd 100644 --- a/src/driver/sqlx_sqlite.rs +++ b/src/driver/sqlx_sqlite.rs @@ -10,8 +10,10 @@ use crate::{debug_print, error::*, executor::*, DatabaseConnection, Statement}; use super::sqlx_common::*; +#[derive(Debug)] pub struct SqlxSqliteConnector; +#[derive(Debug)] pub struct SqlxSqlitePoolConnection { pool: SqlitePool, } diff --git a/src/entity/relation.rs b/src/entity/relation.rs index 4a35b8ba..7b2d7b4d 100644 --- a/src/entity/relation.rs +++ b/src/entity/relation.rs @@ -46,6 +46,7 @@ pub trait Linked { } } +#[derive(Debug)] pub struct RelationDef { pub rel_type: RelationType, pub from_tbl: TableRef, @@ -57,6 +58,7 @@ pub struct RelationDef { pub on_update: Option, } +#[derive(Debug)] pub struct RelationBuilder where E: EntityTrait, diff --git a/src/entity/schema.rs b/src/entity/schema.rs index 727eab06..06c688a8 100644 --- a/src/entity/schema.rs +++ b/src/entity/schema.rs @@ -21,10 +21,10 @@ where column_def.unique_key(); } for primary_key in E::PrimaryKey::iter() { - if column.to_string() == primary_key.into_column().to_string() - && E::PrimaryKey::auto_increment() - { - column_def.auto_increment(); + if column.to_string() == primary_key.into_column().to_string() { + if E::PrimaryKey::auto_increment() { + column_def.auto_increment(); + } if E::PrimaryKey::iter().count() == 1 { column_def.primary_key(); } diff --git a/src/executor/query.rs b/src/executor/query.rs index f16a420c..2ba4133c 100644 --- a/src/executor/query.rs +++ b/src/executor/query.rs @@ -21,6 +21,7 @@ pub trait TryGetable: Sized { fn try_get(res: &QueryResult, pre: &str, col: &str) -> Result; } +#[derive(Debug)] pub enum TryGetError { DbErr(DbErr), Null, diff --git a/src/executor/select.rs b/src/executor/select.rs index fc3a970b..0a5163de 100644 --- a/src/executor/select.rs +++ b/src/executor/select.rs @@ -30,6 +30,7 @@ pub trait SelectorTrait { fn from_raw_query_result(res: QueryResult) -> Result; } +#[derive(Debug)] pub struct SelectModel where M: FromQueryResult, diff --git a/src/lib.rs b/src/lib.rs index 441df8bd..ee5bb8cb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,10 @@ +#![cfg_attr(docsrs, feature(doc_cfg))] +#![deny( + missing_debug_implementations, + clippy::print_stderr, + clippy::print_stdout +)] + //!
//! //! diff --git a/src/tests_cfg/cake.rs b/src/tests_cfg/cake.rs index 49ada3aa..0eeb0738 100644 --- a/src/tests_cfg/cake.rs +++ b/src/tests_cfg/cake.rs @@ -75,6 +75,7 @@ impl Related for Entity { } } +#[derive(Debug)] pub struct CakeToFilling; impl Linked for CakeToFilling { diff --git a/src/util.rs b/src/util.rs index f6ddfd54..20cc8eb3 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,7 +1,7 @@ #[macro_export] #[cfg(feature = "debug-print")] macro_rules! debug_print { - ($( $args:expr ),*) => { println!( $( $args ),* ); } + ($( $args:expr ),*) => { log::debug!( $( $args ),* ); } } #[macro_export] diff --git a/tests/common/setup/schema.rs b/tests/common/setup/schema.rs index 2dc5f239..32e7d8a5 100644 --- a/tests/common/setup/schema.rs +++ b/tests/common/setup/schema.rs @@ -286,5 +286,5 @@ pub async fn create_metadata_table(db: &DbConn) -> Result { .col(ColumnDef::new(metadata::Column::Value).string().not_null()) .to_owned(); - create_table(db, &stmt).await + create_table(db, &stmt, Metadata).await } diff --git a/tests/relational_tests.rs b/tests/relational_tests.rs index 198d4b24..c950ddc6 100644 --- a/tests/relational_tests.rs +++ b/tests/relational_tests.rs @@ -494,7 +494,7 @@ pub async fn linked() -> Result<(), DbErr> { profit_margin: Set(10.4), ..Default::default() }; - let seaside_bakery_res: InsertResult = Bakery::insert(seaside_bakery).exec(&ctx.db).await?; + let seaside_bakery_res = Bakery::insert(seaside_bakery).exec(&ctx.db).await?; // Bob's Baker, Cake & Cake Baker let baker_bob = baker::ActiveModel { @@ -507,7 +507,7 @@ pub async fn linked() -> Result<(), DbErr> { bakery_id: Set(Some(seaside_bakery_res.last_insert_id as i32)), ..Default::default() }; - let baker_bob_res: InsertResult = Baker::insert(baker_bob).exec(&ctx.db).await?; + let baker_bob_res = Baker::insert(baker_bob).exec(&ctx.db).await?; let mud_cake = cake::ActiveModel { name: Set("Mud Cake".to_owned()), price: Set(dec!(10.25)), @@ -516,7 +516,7 @@ pub async fn linked() -> Result<(), DbErr> { bakery_id: Set(Some(seaside_bakery_res.last_insert_id as i32)), ..Default::default() }; - let mud_cake_res: InsertResult = Cake::insert(mud_cake).exec(&ctx.db).await?; + let mud_cake_res = Cake::insert(mud_cake).exec(&ctx.db).await?; let bob_cakes_bakers = cakes_bakers::ActiveModel { cake_id: Set(mud_cake_res.last_insert_id as i32), baker_id: Set(baker_bob_res.last_insert_id as i32), @@ -533,7 +533,7 @@ pub async fn linked() -> Result<(), DbErr> { bakery_id: Set(Some(seaside_bakery_res.last_insert_id as i32)), ..Default::default() }; - let baker_bobby_res: InsertResult = Baker::insert(baker_bobby).exec(&ctx.db).await?; + let baker_bobby_res = Baker::insert(baker_bobby).exec(&ctx.db).await?; let cheese_cake = cake::ActiveModel { name: Set("Cheese Cake".to_owned()), price: Set(dec!(20.5)), @@ -542,7 +542,7 @@ pub async fn linked() -> Result<(), DbErr> { bakery_id: Set(Some(seaside_bakery_res.last_insert_id as i32)), ..Default::default() }; - let cheese_cake_res: InsertResult = Cake::insert(cheese_cake).exec(&ctx.db).await?; + let cheese_cake_res = Cake::insert(cheese_cake).exec(&ctx.db).await?; let bobby_cakes_bakers = cakes_bakers::ActiveModel { cake_id: Set(cheese_cake_res.last_insert_id as i32), baker_id: Set(baker_bobby_res.last_insert_id as i32), @@ -559,7 +559,7 @@ pub async fn linked() -> Result<(), DbErr> { bakery_id: Set(Some(seaside_bakery_res.last_insert_id as i32)), ..Default::default() }; - let chocolate_cake_res: InsertResult = Cake::insert(chocolate_cake).exec(&ctx.db).await?; + let chocolate_cake_res = Cake::insert(chocolate_cake).exec(&ctx.db).await?; let bobby_cakes_bakers = cakes_bakers::ActiveModel { cake_id: Set(chocolate_cake_res.last_insert_id as i32), baker_id: Set(baker_bobby_res.last_insert_id as i32), @@ -575,7 +575,7 @@ pub async fn linked() -> Result<(), DbErr> { notes: Set(Some("Loves cheese cake".to_owned())), ..Default::default() }; - let customer_kate_res: InsertResult = Customer::insert(customer_kate).exec(&ctx.db).await?; + let customer_kate_res = Customer::insert(customer_kate).exec(&ctx.db).await?; let kate_order_1 = order::ActiveModel { bakery_id: Set(seaside_bakery_res.last_insert_id as i32), customer_id: Set(customer_kate_res.last_insert_id as i32), @@ -583,7 +583,7 @@ pub async fn linked() -> Result<(), DbErr> { placed_at: Set(Utc::now().naive_utc()), ..Default::default() }; - let kate_order_1_res: InsertResult = Order::insert(kate_order_1).exec(&ctx.db).await?; + let kate_order_1_res = Order::insert(kate_order_1).exec(&ctx.db).await?; lineitem::ActiveModel { cake_id: Set(cheese_cake_res.last_insert_id as i32), order_id: Set(kate_order_1_res.last_insert_id as i32), @@ -600,7 +600,7 @@ pub async fn linked() -> Result<(), DbErr> { placed_at: Set(Utc::now().naive_utc()), ..Default::default() }; - let kate_order_2_res: InsertResult = Order::insert(kate_order_2).exec(&ctx.db).await?; + let kate_order_2_res = Order::insert(kate_order_2).exec(&ctx.db).await?; lineitem::ActiveModel { cake_id: Set(chocolate_cake_res.last_insert_id as i32), order_id: Set(kate_order_2_res.last_insert_id as i32), @@ -617,7 +617,7 @@ pub async fn linked() -> Result<(), DbErr> { notes: Set(Some("Loves all cakes".to_owned())), ..Default::default() }; - let customer_kara_res: InsertResult = Customer::insert(customer_kara).exec(&ctx.db).await?; + let customer_kara_res = Customer::insert(customer_kara).exec(&ctx.db).await?; let kara_order_1 = order::ActiveModel { bakery_id: Set(seaside_bakery_res.last_insert_id as i32), customer_id: Set(customer_kara_res.last_insert_id as i32), @@ -625,7 +625,7 @@ pub async fn linked() -> Result<(), DbErr> { placed_at: Set(Utc::now().naive_utc()), ..Default::default() }; - let kara_order_1_res: InsertResult = Order::insert(kara_order_1).exec(&ctx.db).await?; + let kara_order_1_res = Order::insert(kara_order_1).exec(&ctx.db).await?; lineitem::ActiveModel { cake_id: Set(mud_cake_res.last_insert_id as i32), order_id: Set(kara_order_1_res.last_insert_id as i32), @@ -642,7 +642,7 @@ pub async fn linked() -> Result<(), DbErr> { placed_at: Set(Utc::now().naive_utc()), ..Default::default() }; - let kara_order_2_res: InsertResult = Order::insert(kara_order_2).exec(&ctx.db).await?; + let kara_order_2_res = Order::insert(kara_order_2).exec(&ctx.db).await?; lineitem::ActiveModel { cake_id: Set(cheese_cake_res.last_insert_id as i32), order_id: Set(kara_order_2_res.last_insert_id as i32),