Compare commits

..

3 Commits

2 changed files with 21 additions and 16 deletions

View File

@ -156,7 +156,6 @@ pub fn composite_derive(input: TokenStream) -> TokenStream {
} }
} }
#[proc_macro_derive(SqlxBitFlags)] #[proc_macro_derive(SqlxBitFlags)]
pub fn sqlx_bitflag_derive(input: TokenStream) -> TokenStream { pub fn sqlx_bitflag_derive(input: TokenStream) -> TokenStream {
let ast: syn::DeriveInput = syn::parse(input).unwrap(); let ast: syn::DeriveInput = syn::parse(input).unwrap();
@ -165,22 +164,22 @@ pub fn sqlx_bitflag_derive(input: TokenStream) -> TokenStream {
quote!{ quote!{
#[cfg(feature = "sqlx")] #[cfg(feature = "sqlx")]
impl sqlx::Type<sqlx::MySql> for #name { impl sqlx::Type<sqlx::Any> for #name {
fn type_info() -> sqlx::mysql::MySqlTypeInfo { fn type_info() -> sqlx::any::AnyTypeInfo {
u64::type_info() u64::type_info()
} }
} }
#[cfg(feature = "sqlx")] #[cfg(feature = "sqlx")]
impl<'q> sqlx::Encode<'q, sqlx::MySql> for #name { impl<'q> sqlx::Encode<'q, sqlx::Any> for #name {
fn encode_by_ref(&self, buf: &mut <sqlx::MySql as sqlx::database::HasArguments<'q>>::ArgumentBuffer) -> sqlx::encode::IsNull { fn encode_by_ref(&self, buf: &mut <sqlx::Any as sqlx::Database>::ArgumentBuffer<'q>) -> Result<sqlx::encode::IsNull, sqlx::error::BoxDynError> {
u64::encode_by_ref(&self.bits(), buf) u64::encode_by_ref(&self.bits(), buf)
} }
} }
#[cfg(feature = "sqlx")] #[cfg(feature = "sqlx")]
impl<'q> sqlx::Decode<'q, sqlx::MySql> for #name { impl<'q> sqlx::Decode<'q, sqlx::Any> for #name {
fn decode(value: <sqlx::MySql as sqlx::database::HasValueRef<'q>>::ValueRef) -> Result<Self, sqlx::error::BoxDynError> { fn decode(value: <sqlx::Any as sqlx::Database>::ValueRef<'q>) -> Result<Self, sqlx::error::BoxDynError> {
u64::decode(value).map(|d| #name::from_bits(d).unwrap()) u64::decode(value).map(|d| #name::from_bits(d).unwrap())
} }
} }

View File

@ -99,23 +99,29 @@ impl<'de> serde::Deserialize<'de> for Snowflake {
} }
#[cfg(feature = "sqlx")] #[cfg(feature = "sqlx")]
impl sqlx::Type<sqlx::MySql> for Snowflake { impl sqlx::Type<sqlx::Any> for Snowflake {
fn type_info() -> <sqlx::MySql as sqlx::Database>::TypeInfo { fn type_info() -> <sqlx::Any as sqlx::Database>::TypeInfo {
<String as sqlx::Type<sqlx::MySql>>::type_info() <String as sqlx::Type<sqlx::Any>>::type_info()
} }
} }
#[cfg(feature = "sqlx")] #[cfg(feature = "sqlx")]
impl<'q> sqlx::Encode<'q, sqlx::MySql> for Snowflake { impl<'q> sqlx::Encode<'q, sqlx::Any> for Snowflake {
fn encode_by_ref(&self, buf: &mut <sqlx::MySql as sqlx::database::HasArguments<'q>>::ArgumentBuffer) -> sqlx::encode::IsNull { fn encode_by_ref(
<String as sqlx::Encode<'q, sqlx::MySql>>::encode_by_ref(&self.0.to_string(), buf) &self,
buf: &mut <sqlx::Any as sqlx::Database>::ArgumentBuffer<'q>,
) -> Result<sqlx::encode::IsNull, sqlx::error::BoxDynError> {
<String as sqlx::Encode<'q, sqlx::Any>>::encode_by_ref(&self.0.to_string(), buf)
} }
} }
#[cfg(feature = "sqlx")] #[cfg(feature = "sqlx")]
impl<'d> sqlx::Decode<'d, sqlx::MySql> for Snowflake { impl<'d> sqlx::Decode<'d, sqlx::Any> for Snowflake {
fn decode(value: <sqlx::MySql as sqlx::database::HasValueRef<'d>>::ValueRef) -> Result<Self, sqlx::error::BoxDynError> { fn decode(
<String as sqlx::Decode<'d, sqlx::MySql>>::decode(value).map(|s| s.parse::<u64>().map(Snowflake).unwrap()) value: <sqlx::Any as sqlx::Database>::ValueRef<'d>,
) -> Result<Self, sqlx::error::BoxDynError> {
<String as sqlx::Decode<'d, sqlx::Any>>::decode(value)
.map(|s| s.parse::<u64>().map(Snowflake).unwrap())
} }
} }