From 5c93253877da129a34402aa74a2f4bf2bffda4a8 Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Mon, 9 Jan 2023 14:46:19 +0800 Subject: [PATCH] Tests --- sea-orm-macros/src/derives/active_enum.rs | 9 ++------- src/executor/query.rs | 11 ++++++++++- tests/common/features/event_trigger.rs | 9 ++------- tests/common/features/json_vec.rs | 9 ++------- 4 files changed, 16 insertions(+), 22 deletions(-) diff --git a/sea-orm-macros/src/derives/active_enum.rs b/sea-orm-macros/src/derives/active_enum.rs index aa5fc7d8..21f8b7ea 100644 --- a/sea-orm-macros/src/derives/active_enum.rs +++ b/sea-orm-macros/src/derives/active_enum.rs @@ -352,13 +352,8 @@ impl ActiveEnum { #[automatically_derived] impl sea_orm::TryGetable for #ident { - fn try_get(res: &sea_orm::QueryResult, pre: &str, col: &str) -> std::result::Result { - let value = <::Value as sea_orm::TryGetable>::try_get(res, pre, col)?; - ::try_from_value(&value).map_err(sea_orm::TryGetError::DbErr) - } - - fn try_get_by_index(res: &sea_orm::QueryResult, idx: usize) -> std::result::Result { - let value = <::Value as sea_orm::TryGetable>::try_get_by_index(res, idx)?; + fn try_get_by(res: &sea_orm::QueryResult, idx: I) -> std::result::Result { + let value = <::Value as sea_orm::TryGetable>::try_get_by(res, idx)?; ::try_from_value(&value).map_err(sea_orm::TryGetError::DbErr) } } diff --git a/src/executor/query.rs b/src/executor/query.rs index 73b07e65..69c101ea 100644 --- a/src/executor/query.rs +++ b/src/executor/query.rs @@ -61,6 +61,15 @@ impl From for DbErr { // QueryResult // impl QueryResult { + /// Get a value from the query result with an ColIdx + pub fn try_get_by(&self, index: I) -> Result + where + T: TryGetable, + I: ColIdx, + { + Ok(T::try_get_by(self, index)?) + } + /// Get a value from the query result with prefixed column name pub fn try_get(&self, pre: &str, col: &str) -> Result where @@ -125,7 +134,7 @@ impl TryGetable for Option { } /// Column Index, used by [`TryGetable`] -pub trait ColIdx: std::fmt::Debug { +pub trait ColIdx: std::fmt::Debug + Copy { #[cfg(feature = "sqlx-mysql")] /// Type shenanigans type SqlxMySqlIndex: sqlx::ColumnIndex; diff --git a/tests/common/features/event_trigger.rs b/tests/common/features/event_trigger.rs index 34b03462..de689532 100644 --- a/tests/common/features/event_trigger.rs +++ b/tests/common/features/event_trigger.rs @@ -39,13 +39,8 @@ impl From for Value { } impl TryGetable for Events { - fn try_get(res: &QueryResult, pre: &str, col: &str) -> Result { - let vec: Vec = res.try_get(pre, col).map_err(TryGetError::DbErr)?; - Ok(Events(vec.into_iter().map(Event).collect())) - } - - fn try_get_by_index(res: &QueryResult, idx: usize) -> Result { - let vec: Vec = res.try_get_by_index(idx).map_err(TryGetError::DbErr)?; + fn try_get_by(res: &QueryResult, idx: I) -> Result { + let vec: Vec = res.try_get_by(idx).map_err(TryGetError::DbErr)?; Ok(Events(vec.into_iter().map(Event).collect())) } } diff --git a/tests/common/features/json_vec.rs b/tests/common/features/json_vec.rs index 82cfec5a..8e2fdcc6 100644 --- a/tests/common/features/json_vec.rs +++ b/tests/common/features/json_vec.rs @@ -25,13 +25,8 @@ impl From for Value { } impl TryGetable for StringVec { - fn try_get(res: &QueryResult, pre: &str, col: &str) -> Result { - let json_str: String = res.try_get(pre, col).map_err(TryGetError::DbErr)?; - serde_json::from_str(&json_str).map_err(|e| TryGetError::DbErr(DbErr::Json(e.to_string()))) - } - - fn try_get_by_index(res: &QueryResult, idx: usize) -> Result { - let json_str: String = res.try_get_by_index(idx).map_err(TryGetError::DbErr)?; + fn try_get_by(res: &QueryResult, idx: I) -> Result { + let json_str: String = res.try_get_by(idx).map_err(TryGetError::DbErr)?; serde_json::from_str(&json_str).map_err(|e| TryGetError::DbErr(DbErr::Json(e.to_string()))) } }