diff --git a/database/hartex-database-queries/src/queries/discord_frontend/cached_guild_upsert.rs b/database/hartex-database-queries/src/queries/discord_frontend/cached_guild_upsert.rs index f96662ba8..7fcc12159 100644 --- a/database/hartex-database-queries/src/queries/discord_frontend/cached_guild_upsert.rs +++ b/database/hartex-database-queries/src/queries/discord_frontend/cached_guild_upsert.rs @@ -16,13 +16,13 @@ pub struct CachedGuildUpsert { default_message_notifications: i16, explicit_content_filter: i16, features: Vec, - icon: String, + icon: Option, large: bool, name: String, owner_id: String, id: String, mfa_level: i16, - premium_subscription_count: i64, + premium_subscription_count: Option, premium_tier: i16, verification_level: i16, } @@ -32,13 +32,13 @@ impl CachedGuildUpsert { default_message_notifications: i16, explicit_content_filter: i16, features: Vec, - icon: String, + icon: Option, large: bool, name: String, owner_id: String, id: String, mfa_level: i16, - premium_subscription_count: i64, + premium_subscription_count: Option, premium_tier: i16, verification_level: i16, ) -> Self { diff --git a/database/hartex-database-queries/src/queries/discord_frontend/cached_member_upsert.rs b/database/hartex-database-queries/src/queries/discord_frontend/cached_member_upsert.rs index 311fcac22..13fe36c72 100644 --- a/database/hartex-database-queries/src/queries/discord_frontend/cached_member_upsert.rs +++ b/database/hartex-database-queries/src/queries/discord_frontend/cached_member_upsert.rs @@ -14,8 +14,8 @@ pub struct CachedMemberUpsert { db_executor: Option>, executor_constructor: for<'a> fn(Uri<&'a str>) -> crate::internal::Ret<'a>, flags: i64, - joined_at: chrono::DateTime, - nick: String, + joined_at: Option>, + nick: Option, user_id: String, guild_id: String, roles: Vec, @@ -24,8 +24,8 @@ impl CachedMemberUpsert { #[must_use = "Queries must be executed after construction"] pub fn bind( flags: i64, - joined_at: chrono::DateTime, - nick: String, + joined_at: Option>, + nick: Option, user_id: String, guild_id: String, roles: Vec, diff --git a/database/hartex-database-queries/src/queries/discord_frontend/cached_role_upsert.rs b/database/hartex-database-queries/src/queries/discord_frontend/cached_role_upsert.rs index 0d11e5354..be0ecae98 100644 --- a/database/hartex-database-queries/src/queries/discord_frontend/cached_role_upsert.rs +++ b/database/hartex-database-queries/src/queries/discord_frontend/cached_role_upsert.rs @@ -14,7 +14,7 @@ pub struct CachedRoleUpsert { db_executor: Option>, executor_constructor: for<'a> fn(Uri<&'a str>) -> crate::internal::Ret<'a>, color: i64, - icon: String, + icon: Option, id: String, guild_id: String, flags: i32, @@ -27,7 +27,7 @@ impl CachedRoleUpsert { #[must_use = "Queries must be executed after construction"] pub fn bind( color: i64, - icon: String, + icon: Option, id: String, guild_id: String, flags: i32, diff --git a/database/hartex-database-queries/src/queries/discord_frontend/cached_user_upsert.rs b/database/hartex-database-queries/src/queries/discord_frontend/cached_user_upsert.rs index 24791e3b0..8cd0b5a8d 100644 --- a/database/hartex-database-queries/src/queries/discord_frontend/cached_user_upsert.rs +++ b/database/hartex-database-queries/src/queries/discord_frontend/cached_user_upsert.rs @@ -13,22 +13,22 @@ use crate::result::IntoCrateResult; pub struct CachedUserUpsert { db_executor: Option>, executor_constructor: for<'a> fn(Uri<&'a str>) -> crate::internal::Ret<'a>, - avatar: String, + avatar: Option, id: String, bot: bool, name: String, discriminator: String, - global_name: String, + global_name: Option, } impl CachedUserUpsert { #[must_use = "Queries must be executed after construction"] pub fn bind( - avatar: String, + avatar: Option, id: String, bot: bool, name: String, discriminator: String, - global_name: String, + global_name: Option, ) -> Self { Self { db_executor: None, diff --git a/database/hartex-database-typedsql/src/codegen/queries.rs b/database/hartex-database-typedsql/src/codegen/queries.rs index c7d4cebc9..211fefde4 100644 --- a/database/hartex-database-typedsql/src/codegen/queries.rs +++ b/database/hartex-database-typedsql/src/codegen/queries.rs @@ -32,6 +32,7 @@ use proc_macro2::Literal; use proc_macro2::Span; use proc_macro2::TokenStream; use quote::TokenStreamExt; +use sqlparser::ast::ColumnOption; use sqlparser::ast::Statement; use syn::File; @@ -136,7 +137,13 @@ fn generate_query_struct_token_stream( .iter() .map(|placeholder| { let dtype = if let Some(col) = table.columns.get(placeholder) { - types::sql_type_to_rust_type_token_stream(col.coltype.clone()).unwrap() + let dt = types::sql_type_to_rust_type_token_stream(col.coltype.clone()).unwrap(); + + if !col.constraints.contains(&ColumnOption::NotNull) { + quote::quote! {Option<#dt>} + } else { + dt + } } else if let Some(dt) = query.extra_placeholder_tys.get(placeholder) { types::sql_type_to_rust_type_token_stream(dt.clone()).unwrap() } else { @@ -292,7 +299,7 @@ fn generate_select_query_fns_token_streams( placeholders.clone(), )); } - _ => return Ok(vec![]) + _ => return Ok(vec![]), }; Ok(vec![ diff --git a/discord-frontend/hartex-discord-entitycache-repositories/src/guild.rs b/discord-frontend/hartex-discord-entitycache-repositories/src/guild.rs index 8930b5fd4..068e48257 100644 --- a/discord-frontend/hartex-discord-entitycache-repositories/src/guild.rs +++ b/discord-frontend/hartex-discord-entitycache-repositories/src/guild.rs @@ -69,16 +69,13 @@ impl Repository for CachedGuildRepository { >>::into(feature.clone()).to_string() }) .collect(), - entity.icon.map(|hash| hash.to_string()).unwrap_or_default(), + entity.icon.map(|hash| hash.to_string()), entity.large, entity.name, entity.owner_id.to_string(), entity.id.to_string(), i16::from(>::into(entity.mfa_level)), - entity - .premium_subscription_count - .map(|id| id as i64) - .unwrap_or_default(), + entity.premium_subscription_count.map(|id| id as i64), i16::from(>::into(entity.premium_tier)), i16::from(>::into( entity.verification_level, diff --git a/discord-frontend/hartex-discord-entitycache-repositories/src/member.rs b/discord-frontend/hartex-discord-entitycache-repositories/src/member.rs index 9449f172c..152520b97 100644 --- a/discord-frontend/hartex-discord-entitycache-repositories/src/member.rs +++ b/discord-frontend/hartex-discord-entitycache-repositories/src/member.rs @@ -52,9 +52,8 @@ impl Repository for CachedMemberRepository { entity.flags.bits() as i64, entity .joined_at - .map(|timestamp| DateTime::from_timestamp(timestamp.as_secs(), 0).unwrap()) - .unwrap(), - entity.nick.unwrap_or_default(), + .map(|timestamp| DateTime::from_timestamp(timestamp.as_secs(), 0).unwrap()), + entity.nick, entity.user_id.to_string(), entity.guild_id.to_string(), entity diff --git a/discord-frontend/hartex-discord-entitycache-repositories/src/role.rs b/discord-frontend/hartex-discord-entitycache-repositories/src/role.rs index 43458a0c5..4326e6bcd 100644 --- a/discord-frontend/hartex-discord-entitycache-repositories/src/role.rs +++ b/discord-frontend/hartex-discord-entitycache-repositories/src/role.rs @@ -77,7 +77,7 @@ impl Repository for CachedRoleRepository { async fn upsert(&self, entity: RoleEntity) -> CacheResult<()> { CachedRoleUpsert::bind( entity.color as i64, - entity.icon.map(|hash| hash.to_string()).unwrap_or_default(), + entity.icon.map(|hash| hash.to_string()), entity.id.to_string(), entity.guild_id.to_string(), entity.flags.bits() as i32, diff --git a/discord-frontend/hartex-discord-entitycache-repositories/src/user.rs b/discord-frontend/hartex-discord-entitycache-repositories/src/user.rs index e8a4eb629..7d2003223 100644 --- a/discord-frontend/hartex-discord-entitycache-repositories/src/user.rs +++ b/discord-frontend/hartex-discord-entitycache-repositories/src/user.rs @@ -43,15 +43,12 @@ impl Repository for CachedUserRepository { async fn upsert(&self, entity: UserEntity) -> CacheResult<()> { CachedUserUpsert::bind( - entity - .avatar - .map(|hash| hash.to_string()) - .unwrap_or_default(), + entity.avatar.map(|hash| hash.to_string()), entity.id.to_string(), entity.bot, entity.name, entity.discriminator.to_string(), - entity.global_name.unwrap_or_default(), + entity.global_name, ) .executor() .await?