From b66916b892e516b7f1f57fcb5f3408d1b15960c8 Mon Sep 17 00:00:00 2001 From: Goran Brkuljan Date: Wed, 29 Jan 2025 17:09:47 +0100 Subject: [PATCH] update: cleanup --- charybdis-parser/src/fields.rs | 15 +++--- charybdis/tests/integrations/custom_fields.rs | 51 ++++++++----------- charybdis/tests/integrations/main.rs | 3 +- charybdis/tests/integrations/model.rs | 4 +- 4 files changed, 34 insertions(+), 39 deletions(-) diff --git a/charybdis-parser/src/fields.rs b/charybdis-parser/src/fields.rs index 3f48311..6a71f23 100644 --- a/charybdis-parser/src/fields.rs +++ b/charybdis-parser/src/fields.rs @@ -112,11 +112,14 @@ impl<'a> Field<'a> { FieldAttributes::from_attributes(&field.attrs) .map(|char_attrs| { let ignore = char_attrs.ignore.unwrap_or(false); - - let column_type = char_attrs.column_type.clone().map( - |tname| CqlType::from_str(tname.as_str()).unwrap() - ).unwrap_or_else(|| Field::outer_type(&field.ty, ignore)); - + let column_type = + char_attrs + .column_type + .as_ref() + .map_or(Field::outer_type(&field.ty, ignore), |tname| { + let error = format!("Unknown column type: {}", tname); + CqlType::from_str(tname.as_str()).expect(&error) + }); let ident = field.ident.clone().unwrap(); Field { @@ -128,7 +131,7 @@ impl<'a> Field<'a> { _ => panic!("Only type path is supported!"), }, outer_type: column_type, - column_type_override: char_attrs.column_type.clone(), + column_type_override: char_attrs.column_type, span: field.span(), attrs: &field.attrs, ignore, diff --git a/charybdis/tests/integrations/custom_fields.rs b/charybdis/tests/integrations/custom_fields.rs index 8b44f00..7c5abab 100644 --- a/charybdis/tests/integrations/custom_fields.rs +++ b/charybdis/tests/integrations/custom_fields.rs @@ -1,7 +1,8 @@ -use charybdis::scylla::deserialize::DeserializeValue; -use charybdis::scylla::frame::response::result::ColumnType; use charybdis::scylla::SerializeValue; use charybdis::types::Text; +use scylla::_macro_internal::{CellWriter, ColumnType, WrittenCellProof}; +use scylla::deserialize::{DeserializationError, DeserializeValue, FrameSlice, TypeCheckError}; +use scylla::serialize::SerializationError; #[derive(Debug, Default, Clone, PartialEq, strum::FromRepr)] #[repr(i8)] @@ -21,19 +22,17 @@ impl std::fmt::Display for AddressTypeCustomDeserializeErr { impl std::error::Error for AddressTypeCustomDeserializeErr {} impl<'frame, 'metadata> DeserializeValue<'frame, 'metadata> for AddressTypeCustomField { - fn type_check( - typ: &scylla::frame::response::result::ColumnType, - ) -> std::result::Result<(), scylla::deserialize::TypeCheckError> { + fn type_check(typ: &ColumnType) -> Result<(), TypeCheckError> { >::type_check(typ) } fn deserialize( typ: &'metadata ColumnType<'metadata>, - v: Option>, - ) -> std::result::Result { + v: Option>, + ) -> Result { let si8 = >::deserialize(typ, v)?; let s = Self::from_repr(si8); - s.ok_or_else(|| scylla::deserialize::DeserializationError::new(AddressTypeCustomDeserializeErr(si8))) + s.ok_or_else(|| DeserializationError::new(AddressTypeCustomDeserializeErr(si8))) } } @@ -41,11 +40,11 @@ impl SerializeValue for AddressTypeCustomField { fn serialize<'b>( &self, typ: &ColumnType, - writer: scylla::serialize::writers::CellWriter<'b>, - ) -> Result, scylla::serialize::SerializationError> { + writer: CellWriter<'b>, + ) -> Result, SerializationError> { let disc = self.clone() as i8; - let v = ::serialize(&disc, typ, writer)?; + let v = ::serialize(&disc, typ, writer)?; Ok(v) } } @@ -57,7 +56,9 @@ pub struct UserExtraDataCustomField { impl Default for UserExtraDataCustomField { fn default() -> Self { - Self { user_tags: vec![("some_key".to_string(), "some_value".to_string())] } + Self { + user_tags: vec![("some_key".to_string(), "some_value".to_string())], + } } } @@ -71,21 +72,17 @@ impl std::fmt::Display for UserExtraDataDeserializeErr { impl std::error::Error for UserExtraDataDeserializeErr {} impl<'frame, 'metadata> DeserializeValue<'frame, 'metadata> for UserExtraDataCustomField { - fn type_check( - typ: &scylla::frame::response::result::ColumnType, - ) -> std::result::Result<(), scylla::deserialize::TypeCheckError> { + fn type_check(typ: &ColumnType) -> Result<(), TypeCheckError> { >::type_check(typ) } fn deserialize( typ: &'metadata ColumnType<'metadata>, - v: Option>, - ) -> std::result::Result { + v: Option>, + ) -> Result { let si8 = >::deserialize(typ, v)?; serde_json::from_str::(&si8) - .map_err( - |_e| scylla::deserialize::DeserializationError::new( - UserExtraDataDeserializeErr(si8))) + .map_err(|_e| DeserializationError::new(UserExtraDataDeserializeErr(si8))) } } @@ -93,15 +90,11 @@ impl SerializeValue for UserExtraDataCustomField { fn serialize<'b>( &self, typ: &ColumnType, - writer: scylla::serialize::writers::CellWriter<'b>, - ) -> Result, scylla::serialize::SerializationError> { + writer: CellWriter<'b>, + ) -> Result, SerializationError> { + let disc = serde_json::to_string(&self).map_err(|_e| SerializationError::new(_e))?; - let disc = serde_json::to_string(&self) - .map_err(|_e| scylla::serialize::SerializationError::new( - _e - ))?; - - let v = ::serialize(&disc, typ, writer)?; + let v = ::serialize(&disc, typ, writer)?; Ok(v) } -} \ No newline at end of file +} diff --git a/charybdis/tests/integrations/main.rs b/charybdis/tests/integrations/main.rs index 0ba8cb1..2ad20c2 100644 --- a/charybdis/tests/integrations/main.rs +++ b/charybdis/tests/integrations/main.rs @@ -1,5 +1,4 @@ mod common; +mod custom_fields; mod model; mod query; - -mod custom_fields; \ No newline at end of file diff --git a/charybdis/tests/integrations/model.rs b/charybdis/tests/integrations/model.rs index 5f8a7c0..e2ff257 100644 --- a/charybdis/tests/integrations/model.rs +++ b/charybdis/tests/integrations/model.rs @@ -1,5 +1,5 @@ use crate::common::db_session; -use crate::custom_fields::{AddressTypeCustomField,UserExtraDataCustomField}; +use crate::custom_fields::{AddressTypeCustomField, UserExtraDataCustomField}; use charybdis::batch::ModelBatch; use charybdis::errors::CharybdisError; @@ -81,7 +81,7 @@ impl User { addr_type: AddressTypeCustomField::WorkAddress, }), is_confirmed: true, - user_extra_data: UserExtraDataCustomField::default() + user_extra_data: UserExtraDataCustomField::default(), } } }