Add profiles table

This commit is contained in:
2025-02-07 02:32:31 +00:00
parent 124b1cf484
commit cf18044b95
27 changed files with 1194 additions and 150 deletions

View File

@@ -1,5 +1,6 @@
use cipher_core::repository::profile_repository::NewProfile;
use cipher_core::repository::profile_repository::ProfileRepository;
use cipher_core::repository::user_repository::NewUser;
use cipher_core::repository::user_repository::User;
use cipher_core::repository::user_repository::UserRepository;
use cipher_core::repository::RepositoryError;
use cipher_core::repository::RepositoryProvider;
@@ -176,11 +177,16 @@ where
{
let mut repo = ctx.data.repository().await?;
if let Some(mut user) = repo.user_by_discord_user_id(discord_user_id).await? {
let user = match repo.user_by_discord_user_id(discord_user_id).await? {
Some(user) => user,
None => repo.insert_user(NewUser { discord_user_id }).await?,
};
if let Some(mut profile) = repo.active_profile_by_discord_id(discord_user_id).await? {
let defaults = EditCodesModal {
pokemon_go_code: user.pokemon_go_code.clone(),
pokemon_pocket_code: user.pokemon_pocket_code.clone(),
switch_code: user.switch_code.clone(),
pokemon_go_code: profile.pokemon_go_code.clone(),
pokemon_pocket_code: profile.pokemon_pocket_code.clone(),
switch_code: profile.switch_code.clone(),
};
let mut data = match EditCodesModal::execute_with_defaults(ctx, defaults).await? {
@@ -190,15 +196,11 @@ where
data.validate().map_err(EditError::ValidationError)?;
user = User {
id: user.id,
discord_user_id: user.discord_user_id,
pokemon_go_code: data.pokemon_go_code,
pokemon_pocket_code: data.pokemon_pocket_code,
switch_code: data.switch_code,
};
profile.pokemon_go_code = data.pokemon_go_code;
profile.pokemon_pocket_code = data.pokemon_pocket_code;
profile.switch_code = data.switch_code;
repo.update_user(user).await?;
repo.insert_profile(profile.into_new()).await?;
} else {
let mut data = match EditCodesModal::execute(ctx).await? {
Some(data) => data,
@@ -207,14 +209,26 @@ where
data.validate().map_err(EditError::ValidationError)?;
let new_user = NewUser {
discord_user_id,
let new_profile = NewProfile {
user_id: user.id,
thumbnail_url: None,
image_url: None,
trainer_class: None,
nature: None,
partner_pokemon: None,
starting_region: None,
favourite_food: None,
likes: None,
quotes: None,
pokemon_go_code: data.pokemon_go_code,
pokemon_pocket_code: data.pokemon_pocket_code,
switch_code: data.switch_code,
};
repo.insert_user(new_user).await?;
repo.insert_profile(new_profile).await?;
}
Ok(())

View File

@@ -1,4 +1,4 @@
use cipher_core::repository::user_repository::UserRepository;
use cipher_core::repository::profile_repository::ProfileRepository;
use cipher_core::repository::RepositoryProvider;
use poise::CreateReply;
use serenity::all::CreateEmbed;
@@ -66,8 +66,6 @@ async fn show_inner<R: RepositoryProvider + Send + Sync>(
member: Member,
ephemeral: bool,
) -> Result<(), AppError<R::BackendError>> {
let mut repo = ctx.data.repository().await?;
let avatar_url = crate::utils::member_avatar_url(&member);
let embed_color = match member.colour(ctx) {
@@ -82,18 +80,19 @@ async fn show_inner<R: RepositoryProvider + Send + Sync>(
let mut is_profile_empty = true;
if let Some(user_info) = repo.user_by_discord_user_id(member.user.id.get()).await? {
if let Some(code) = user_info.pokemon_go_code {
let mut repo = ctx.data.repository().await?;
if let Some(profile) = repo.active_profile_by_discord_id(member.user.id.get()).await? {
if let Some(code) = profile.pokemon_go_code {
embed = embed.field("Pokémon Go Friend Code", code, false);
is_profile_empty = false;
}
if let Some(code) = user_info.pokemon_pocket_code {
if let Some(code) = profile.pokemon_pocket_code {
embed = embed.field("Pokémon TCG Pocket Friend Code", code, false);
is_profile_empty = false;
}
if let Some(code) = user_info.switch_code {
if let Some(code) = profile.switch_code {
embed = embed.field("Nintendo Switch Friend Code", code, false);
is_profile_empty = false;
}