Make components be Arc<Mutex<T>>
This commit is contained in:
parent
a36d691fea
commit
94eac6eba9
|
@ -1,3 +1,5 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use chorus_macros::Updateable;
|
||||
use chrono::Utc;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
@ -46,7 +48,7 @@ pub struct Channel {
|
|||
pub last_pin_timestamp: Option<String>,
|
||||
pub managed: Option<bool>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub member: Option<ThreadMember>,
|
||||
pub member: Option<Arc<Mutex<ThreadMember>>>,
|
||||
pub member_count: Option<i32>,
|
||||
pub message_count: Option<i32>,
|
||||
pub name: Option<String>,
|
||||
|
@ -56,12 +58,12 @@ pub struct Channel {
|
|||
#[cfg(feature = "sqlx")]
|
||||
pub permission_overwrites: Option<sqlx::types::Json<Vec<PermissionOverwrite>>>,
|
||||
#[cfg(not(feature = "sqlx"))]
|
||||
pub permission_overwrites: Option<Vec<PermissionOverwrite>>,
|
||||
pub permission_overwrites: Option<Vec<Arc<Mutex<PermissionOverwrite>>>>,
|
||||
pub permissions: Option<String>,
|
||||
pub position: Option<i32>,
|
||||
pub rate_limit_per_user: Option<i32>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub recipients: Option<Vec<User>>,
|
||||
pub recipients: Option<Vec<Arc<Mutex<User>>>>,
|
||||
pub rtc_region: Option<String>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub thread_metadata: Option<ThreadMetadata>,
|
||||
|
@ -154,7 +156,7 @@ pub struct ThreadMember {
|
|||
pub user_id: Option<Snowflake>,
|
||||
pub join_timestamp: Option<String>,
|
||||
pub flags: Option<u64>,
|
||||
pub member: Option<GuildMember>,
|
||||
pub member: Option<Arc<Mutex<GuildMember>>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, Clone)]
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::types::entities::User;
|
||||
|
@ -15,7 +17,7 @@ pub struct Emoji {
|
|||
#[cfg(not(feature = "sqlx"))]
|
||||
pub roles: Option<Vec<Snowflake>>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub user: Option<User>,
|
||||
pub user: Option<Arc<Mutex<User>>>,
|
||||
pub require_colons: Option<bool>,
|
||||
pub managed: Option<bool>,
|
||||
pub animated: Option<bool>,
|
||||
|
|
|
@ -42,7 +42,7 @@ pub struct Guild {
|
|||
pub icon_hash: Option<String>,
|
||||
pub id: Snowflake,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub invites: Option<Vec<GuildInvite>>,
|
||||
pub invites: Option<Vec<Arc<Mutex<GuildInvite>>>>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub joined_at: Option<String>,
|
||||
pub large: Option<bool>,
|
||||
|
@ -68,7 +68,7 @@ pub struct Guild {
|
|||
pub public_updates_channel_id: Option<Snowflake>,
|
||||
pub region: Option<String>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub roles: Option<Vec<RoleObject>>,
|
||||
pub roles: Option<Vec<Arc<Mutex<RoleObject>>>>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub rules_channel: Option<String>,
|
||||
pub rules_channel_id: Option<Snowflake>,
|
||||
|
@ -81,13 +81,13 @@ pub struct Guild {
|
|||
pub vanity_url_code: Option<String>,
|
||||
pub verification_level: Option<i32>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub voice_states: Option<Vec<VoiceState>>,
|
||||
pub voice_states: Option<Vec<Arc<Mutex<VoiceState>>>>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub webhooks: Option<Vec<Webhook>>,
|
||||
pub webhooks: Option<Vec<Arc<Mutex<Webhook>>>>,
|
||||
#[cfg(feature = "sqlx")]
|
||||
pub welcome_screen: Option<sqlx::types::Json<WelcomeScreenObject>>,
|
||||
#[cfg(not(feature = "sqlx"))]
|
||||
pub welcome_screen: Option<WelcomeScreenObject>,
|
||||
pub welcome_screen: Option<Arc<Mutex<WelcomeScreenObject>>>,
|
||||
pub widget_channel_id: Option<Snowflake>,
|
||||
pub widget_enabled: Option<bool>,
|
||||
}
|
||||
|
@ -113,11 +113,11 @@ pub struct GuildInvite {
|
|||
pub created_at: DateTime<Utc>,
|
||||
pub expires_at: Option<DateTime<Utc>>,
|
||||
pub guild_id: Snowflake,
|
||||
pub guild: Option<Guild>,
|
||||
pub guild: Option<Arc<Mutex<Guild>>>,
|
||||
pub channel_id: Snowflake,
|
||||
pub channel: Option<Channel>,
|
||||
pub channel: Option<Arc<Mutex<Channel>>>,
|
||||
pub inviter_id: Option<Snowflake>,
|
||||
pub inviter: Option<User>,
|
||||
pub inviter: Option<Arc<Mutex<User>>>,
|
||||
pub target_user_id: Option<Snowflake>,
|
||||
pub target_user: Option<String>,
|
||||
pub target_user_type: Option<i32>,
|
||||
|
@ -151,7 +151,7 @@ pub struct GuildScheduledEvent {
|
|||
pub entity_type: GuildScheduledEventEntityType,
|
||||
pub entity_id: Option<Snowflake>,
|
||||
pub entity_metadata: Option<GuildScheduledEventEntityMetadata>,
|
||||
pub creator: Option<User>,
|
||||
pub creator: Option<Arc<Mutex<User>>>,
|
||||
pub user_count: Option<u64>,
|
||||
pub image: Option<String>,
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::types::{entities::PublicUser, Snowflake};
|
||||
|
@ -8,7 +10,7 @@ use crate::types::{entities::PublicUser, Snowflake};
|
|||
/// # Reference
|
||||
/// See <https://discord-userdoccers.vercel.app/resources/guild#guild-member-object>
|
||||
pub struct GuildMember {
|
||||
pub user: Option<PublicUser>,
|
||||
pub user: Option<Arc<Mutex<PublicUser>>>,
|
||||
pub nick: Option<String>,
|
||||
pub avatar: Option<String>,
|
||||
pub roles: Vec<Snowflake>,
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use chrono::{DateTime, Utc};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
|
@ -21,14 +23,14 @@ pub struct Integration {
|
|||
pub expire_behaviour: Option<u8>,
|
||||
pub expire_grace_period: Option<u16>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub user: Option<User>,
|
||||
pub user: Option<Arc<Mutex<User>>>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub account: IntegrationAccount,
|
||||
pub synced_at: Option<DateTime<Utc>>,
|
||||
pub subscriber_count: Option<f64>,
|
||||
pub revoked: Option<bool>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub application: Option<Application>,
|
||||
pub application: Option<Arc<Mutex<Application>>>,
|
||||
pub scopes: Option<Vec<String>>,
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use chrono::{DateTime, Utc};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
|
@ -68,7 +70,7 @@ pub enum NSFWLevel {
|
|||
/// See <https://discord-userdoccers.vercel.app/resources/invite#invite-stage-instance-object>
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct InviteStageInstance {
|
||||
pub members: Vec<GuildMember>,
|
||||
pub members: Vec<Arc<Mutex<GuildMember>>>,
|
||||
pub participant_count: i32,
|
||||
pub speaker_count: i32,
|
||||
pub topic: String,
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use chrono::{DateTime, Utc};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_repr::{Deserialize_repr, Serialize_repr};
|
||||
|
@ -13,7 +15,7 @@ pub struct Relationship {
|
|||
#[serde(rename = "type")]
|
||||
pub relationship_type: RelationshipType,
|
||||
pub nickname: Option<String>,
|
||||
pub user: PublicUser,
|
||||
pub user: Arc<Mutex<PublicUser>>,
|
||||
pub since: Option<DateTime<Utc>>,
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::types::{entities::User, utils::Snowflake};
|
||||
|
@ -22,7 +24,7 @@ pub struct Sticker {
|
|||
pub available: Option<bool>,
|
||||
pub guild_id: Option<Snowflake>,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub user: Option<User>,
|
||||
pub user: Option<Arc<Mutex<User>>>,
|
||||
pub sort_value: Option<u8>,
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::types::entities::User;
|
||||
|
@ -19,5 +21,5 @@ pub struct TeamMember {
|
|||
pub membership_state: u8,
|
||||
pub permissions: Vec<String>,
|
||||
pub team_id: Snowflake,
|
||||
pub user: User,
|
||||
pub user: Arc<Mutex<User>>,
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use chrono::{DateTime, Utc};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
|
@ -16,13 +18,13 @@ pub struct GuildTemplate {
|
|||
pub usage_count: Option<u64>,
|
||||
pub creator_id: Snowflake,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub creator: User,
|
||||
pub creator: Arc<Mutex<User>>,
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub updated_at: DateTime<Utc>,
|
||||
pub source_guild_id: Snowflake,
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub source_guild: Vec<Guild>,
|
||||
pub source_guild: Vec<Arc<Mutex<Guild>>>,
|
||||
// Unsure how a {recursive: Guild} looks like, might be a Vec?
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub serialized_source_guild: Vec<Guild>,
|
||||
pub serialized_source_guild: Vec<Arc<Mutex<Guild>>>,
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use chrono::{serde::ts_milliseconds_option, Utc};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
|
@ -73,7 +75,7 @@ pub struct UserSettings {
|
|||
#[cfg(not(feature = "sqlx"))]
|
||||
pub restricted_guilds: Vec<String>,
|
||||
pub show_current_game: bool,
|
||||
pub status: UserStatus,
|
||||
pub status: Arc<Mutex<UserStatus>>,
|
||||
pub stream_notifications_enabled: bool,
|
||||
pub theme: UserTheme,
|
||||
pub timezone_offset: i16,
|
||||
|
@ -109,7 +111,7 @@ impl Default for UserSettings {
|
|||
render_reactions: true,
|
||||
restricted_guilds: Default::default(),
|
||||
show_current_game: true,
|
||||
status: UserStatus::Online,
|
||||
status: Arc::new(Mutex::new(UserStatus::Online)),
|
||||
stream_notifications_enabled: false,
|
||||
theme: UserTheme::Dark,
|
||||
timezone_offset: 0,
|
||||
|
@ -149,5 +151,5 @@ pub struct GuildFolder {
|
|||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct LoginResult {
|
||||
pub token: String,
|
||||
pub settings: UserSettings,
|
||||
pub settings: Arc<Mutex<UserSettings>>,
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use chrono::{DateTime, Utc};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
|
@ -14,7 +16,7 @@ pub struct VoiceState {
|
|||
pub guild: Option<Guild>,
|
||||
pub channel_id: Option<Snowflake>,
|
||||
pub user_id: Snowflake,
|
||||
pub member: Option<GuildMember>,
|
||||
pub member: Option<Arc<Mutex<GuildMember>>>,
|
||||
pub session_id: Snowflake,
|
||||
pub token: Option<String>,
|
||||
pub deaf: bool,
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::types::{
|
||||
|
@ -20,10 +22,10 @@ pub struct Webhook {
|
|||
pub application_id: Snowflake,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub user: Option<User>,
|
||||
pub user: Option<Arc<Mutex<User>>>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
#[cfg_attr(feature = "sqlx", sqlx(skip))]
|
||||
pub source_guild: Option<Guild>,
|
||||
pub source_guild: Option<Arc<Mutex<Guild>>>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub url: Option<String>,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue