From b8571faf60598673330a0e74fbad7f4d876a4720 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Mon, 12 Aug 2024 17:15:31 +0200 Subject: [PATCH] Change sqlx::Any to sqlx::Postgres --- Cargo.toml | 4 +--- chorus-macros/src/lib.rs | 18 +++++++-------- src/types/config/types/guild_configuration.rs | 22 +++++++++---------- src/types/entities/channel.rs | 2 +- src/types/entities/user.rs | 18 +++++++-------- src/types/utils/snowflake.rs | 18 +++++++-------- 6 files changed, 40 insertions(+), 42 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 83b7e9d..bfdb782 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,13 +49,11 @@ log = "0.4.22" async-trait = "0.1.81" chorus-macros = { path = "./chorus-macros", version = "0" } # Note: version here is used when releasing. This will use the latest release. Make sure to republish the crate when code in macros is changed! sqlx = { version = "0.8.0", features = [ - "mysql", - "sqlite", "json", "chrono", "ipnetwork", "runtime-tokio-rustls", - "any", + "postgres", ], optional = true } discortp = { version = "0.5.0", optional = true, features = [ "rtp", diff --git a/chorus-macros/src/lib.rs b/chorus-macros/src/lib.rs index 1c3a8bd..c2a23c5 100644 --- a/chorus-macros/src/lib.rs +++ b/chorus-macros/src/lib.rs @@ -164,23 +164,23 @@ pub fn sqlx_bitflag_derive(input: TokenStream) -> TokenStream { quote!{ #[cfg(feature = "sqlx")] - impl sqlx::Type for #name { - fn type_info() -> sqlx::any::AnyTypeInfo { - as sqlx::Type>::type_info() + impl sqlx::Type for #name { + fn type_info() -> sqlx::postgres::PgTypeInfo { + as sqlx::Type>::type_info() } } #[cfg(feature = "sqlx")] - impl<'q> sqlx::Encode<'q, sqlx::Any> for #name { - fn encode_by_ref(&self, buf: &mut ::ArgumentBuffer<'q>) -> Result { - as sqlx::Encode>::encode_by_ref(&self.bits().to_be_bytes().into(), buf) + impl<'q> sqlx::Encode<'q, sqlx::Postgres> for #name { + fn encode_by_ref(&self, buf: &mut ::ArgumentBuffer<'q>) -> Result { + as sqlx::Encode>::encode_by_ref(&self.bits().to_be_bytes().into(), buf) } } #[cfg(feature = "sqlx")] - impl<'q> sqlx::Decode<'q, sqlx::Any> for #name { - fn decode(value: ::ValueRef<'q>) -> Result { - let vec = as sqlx::Decode>::decode(value)?; + impl<'q> sqlx::Decode<'q, sqlx::Postgres> for #name { + fn decode(value: ::ValueRef<'q>) -> Result { + let vec = as sqlx::Decode>::decode(value)?; Ok(Self::from_bits(vec_u8_to_u64(vec)).unwrap()) } } diff --git a/src/types/config/types/guild_configuration.rs b/src/types/config/types/guild_configuration.rs index fc07d1c..95bf6c4 100644 --- a/src/types/config/types/guild_configuration.rs +++ b/src/types/config/types/guild_configuration.rs @@ -162,11 +162,11 @@ impl Display for GuildFeaturesList { } #[cfg(feature = "sqlx")] -impl<'r> sqlx::Decode<'r, sqlx::Any> for GuildFeaturesList { +impl<'r> sqlx::Decode<'r, sqlx::Postgres> for GuildFeaturesList { fn decode( - value: ::ValueRef<'r>, + value: ::ValueRef<'r>, ) -> Result { - let v = >::decode(value)?; + let v = >::decode(value)?; Ok(Self( v.split(',') .filter(|f| !f.is_empty()) @@ -177,10 +177,10 @@ impl<'r> sqlx::Decode<'r, sqlx::Any> for GuildFeaturesList { } #[cfg(feature = "sqlx")] -impl<'q> sqlx::Encode<'q, sqlx::Any> for GuildFeaturesList { +impl<'q> sqlx::Encode<'q, sqlx::Postgres> for GuildFeaturesList { fn encode_by_ref( &self, - buf: &mut ::ArgumentBuffer<'q>, + buf: &mut ::ArgumentBuffer<'q>, ) -> Result> { if self.is_empty() { return Ok(sqlx::encode::IsNull::Yes); @@ -191,18 +191,18 @@ impl<'q> sqlx::Encode<'q, sqlx::Any> for GuildFeaturesList { .collect::>() .join(","); - >::encode_by_ref(&features, buf) + >::encode_by_ref(&features, buf) } } #[cfg(feature = "sqlx")] -impl sqlx::Type for GuildFeaturesList { - fn type_info() -> sqlx::any::AnyTypeInfo { - >::type_info() +impl sqlx::Type for GuildFeaturesList { + fn type_info() -> ::TypeInfo { + >::type_info() } - fn compatible(ty: &sqlx::any::AnyTypeInfo) -> bool { - >::compatible(ty) + fn compatible(ty: &::TypeInfo) -> bool { + >::compatible(ty) } } diff --git a/src/types/entities/channel.rs b/src/types/entities/channel.rs index 3d6cd3a..f794bba 100644 --- a/src/types/entities/channel.rs +++ b/src/types/entities/channel.rs @@ -342,7 +342,7 @@ pub struct DefaultReaction { )] #[cfg_attr(feature = "sqlx", derive(sqlx::Type))] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] -#[repr(u32)] +#[repr(i32)] /// # Reference /// See pub enum ChannelType { diff --git a/src/types/entities/user.rs b/src/types/entities/user.rs index 15a601b..4722dc8 100644 --- a/src/types/entities/user.rs +++ b/src/types/entities/user.rs @@ -109,32 +109,32 @@ impl TryFrom> for ThemeColors { #[cfg(feature = "sqlx")] // TODO: Add tests for Encode and Decode. -impl<'q> sqlx::Encode<'q, sqlx::Any> for ThemeColors { +impl<'q> sqlx::Encode<'q, sqlx::Postgres> for ThemeColors { fn encode_by_ref( &self, - buf: &mut ::ArgumentBuffer<'q>, + buf: &mut ::ArgumentBuffer<'q>, ) -> Result> { let mut vec_u8 = Vec::new(); vec_u8.extend_from_slice(&self.inner.0.to_be_bytes()); vec_u8.extend_from_slice(&self.inner.1.to_be_bytes()); - as sqlx::Encode>::encode_by_ref(&vec_u8, buf) + as sqlx::Encode>::encode_by_ref(&vec_u8, buf) } } #[cfg(feature = "sqlx")] -impl<'d> sqlx::Decode<'d, sqlx::Any> for ThemeColors { +impl<'d> sqlx::Decode<'d, sqlx::Postgres> for ThemeColors { fn decode( - value: ::ValueRef<'d>, + value: ::ValueRef<'d>, ) -> Result { - let value_vec = as sqlx::Decode<'d, sqlx::Any>>::decode(value)?; + let value_vec = as sqlx::Decode<'d, sqlx::Postgres>>::decode(value)?; value_vec.try_into().map_err(|e: ChorusError| e.into()) } } #[cfg(feature = "sqlx")] -impl sqlx::Type for ThemeColors { - fn type_info() -> ::TypeInfo { - >::type_info() +impl sqlx::Type for ThemeColors { + fn type_info() -> ::TypeInfo { + >::type_info() } } diff --git a/src/types/utils/snowflake.rs b/src/types/utils/snowflake.rs index 7caffc7..46f892a 100644 --- a/src/types/utils/snowflake.rs +++ b/src/types/utils/snowflake.rs @@ -99,28 +99,28 @@ impl<'de> serde::Deserialize<'de> for Snowflake { } #[cfg(feature = "sqlx")] -impl sqlx::Type for Snowflake { - fn type_info() -> ::TypeInfo { - >::type_info() +impl sqlx::Type for Snowflake { + fn type_info() -> ::TypeInfo { + >::type_info() } } #[cfg(feature = "sqlx")] -impl<'q> sqlx::Encode<'q, sqlx::Any> for Snowflake { +impl<'q> sqlx::Encode<'q, sqlx::Postgres> for Snowflake { fn encode_by_ref( &self, - buf: &mut ::ArgumentBuffer<'q>, + buf: &mut ::ArgumentBuffer<'q>, ) -> Result { - >::encode_by_ref(&self.0.to_string(), buf) + >::encode_by_ref(&self.0.to_string(), buf) } } #[cfg(feature = "sqlx")] -impl<'d> sqlx::Decode<'d, sqlx::Any> for Snowflake { +impl<'d> sqlx::Decode<'d, sqlx::Postgres> for Snowflake { fn decode( - value: ::ValueRef<'d>, + value: ::ValueRef<'d>, ) -> Result { - >::decode(value) + >::decode(value) .map(|s| s.parse::().map(Snowflake).unwrap()) } }