| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #[macro_export]
- macro_rules! impl_from_and_to_type_option {
- ($target: ident, $field_type:expr) => {
- impl_from_field_type_option!($target);
- impl_to_field_type_option!($target, $field_type);
- };
- }
- #[macro_export]
- macro_rules! impl_from_field_type_option {
- ($target: ident) => {
- impl std::convert::From<&FieldMeta> for $target {
- fn from(field_meta: &FieldMeta) -> $target {
- match serde_json::from_str(&field_meta.type_options) {
- Ok(obj) => obj,
- Err(err) => {
- tracing::error!("{} convert from any data failed, {:?}", stringify!($target), err);
- $target::default()
- }
- }
- }
- }
- };
- }
- #[macro_export]
- macro_rules! impl_to_field_type_option {
- ($target: ident, $field_type:expr) => {
- impl $target {
- pub fn field_type(&self) -> FieldType {
- $field_type
- }
- }
- impl std::convert::From<$target> for String {
- fn from(field_description: $target) -> Self {
- match serde_json::to_string(&field_description) {
- Ok(s) => s,
- Err(e) => {
- tracing::error!("Field type data convert to AnyData fail, error: {:?}", e);
- serde_json::to_string(&$target::default()).unwrap()
- }
- }
- }
- }
- };
- }
|