Merge pull request #1 from billy1624/pr/1041

Pr/1041
This commit is contained in:
jimmycuadra 2022-09-15 02:09:53 -07:00 committed by GitHub
commit dbc0c72e92
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 67 additions and 0 deletions

View File

@ -682,6 +682,7 @@ impl_into_active_value!(f32);
impl_into_active_value!(f64);
impl_into_active_value!(&'static str);
impl_into_active_value!(String);
impl_into_active_value!(Vec<u8>);
#[cfg(feature = "with-json")]
#[cfg_attr(docsrs, doc(cfg(feature = "with-json")))]

66
tests/type_tests.rs Normal file
View File

@ -0,0 +1,66 @@
pub mod common;
use sea_orm::{IntoActiveValue, TryFromU64, TryGetable, Value};
/*
When supporting a new type in SeaORM we should implement the following traits for it:
- `IntoActiveValue`, given that it implemented `Into<Value>` already
- `TryGetable`
- `TryFromU64`
Also, we need to update `impl FromQueryResult for JsonValue` at `src/query/json.rs`
to correctly serialize the type as `serde_json::Value`.
*/
pub fn it_impl_into_active_value<T: IntoActiveValue<V>, V: Into<Value>>() {}
pub fn it_impl_try_getable<T: TryGetable>() {}
pub fn it_impl_try_from_u64<T: TryFromU64>() {}
#[allow(unused_macros)]
macro_rules! it_impl_traits {
( $ty: ty ) => {
it_impl_into_active_value::<$ty, $ty>();
it_impl_into_active_value::<Option<$ty>, Option<$ty>>();
it_impl_into_active_value::<Option<Option<$ty>>, Option<$ty>>();
it_impl_try_getable::<$ty>();
it_impl_try_getable::<Option<$ty>>();
it_impl_try_from_u64::<$ty>();
};
}
#[sea_orm_macros::test]
#[cfg(feature = "sqlx-dep")]
fn main() {
it_impl_traits!(i8);
it_impl_traits!(i16);
it_impl_traits!(i32);
it_impl_traits!(i64);
it_impl_traits!(u8);
it_impl_traits!(u16);
it_impl_traits!(u32);
it_impl_traits!(u64);
it_impl_traits!(bool);
it_impl_traits!(f32);
it_impl_traits!(f64);
it_impl_traits!(Vec<u8>);
it_impl_traits!(String);
it_impl_traits!(serde_json::Value);
it_impl_traits!(chrono::NaiveDate);
it_impl_traits!(chrono::NaiveTime);
it_impl_traits!(chrono::NaiveDateTime);
it_impl_traits!(chrono::DateTime<chrono::FixedOffset>);
it_impl_traits!(chrono::DateTime<chrono::Utc>);
it_impl_traits!(chrono::DateTime<chrono::Local>);
it_impl_traits!(time::Date);
it_impl_traits!(time::Time);
it_impl_traits!(time::PrimitiveDateTime);
it_impl_traits!(time::OffsetDateTime);
it_impl_traits!(rust_decimal::Decimal);
it_impl_traits!(uuid::Uuid);
}