pub struct Achievement {Show 14 fields
pub id: Uuid,
pub organization_id: Uuid,
pub category: AchievementCategory,
pub tier: AchievementTier,
pub name: String,
pub description: String,
pub icon: String,
pub points_value: i32,
pub requirements: String,
pub is_secret: bool,
pub is_repeatable: bool,
pub display_order: i32,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}Expand description
Achievement entity - Defines badges/achievements users can earn
Represents a specific accomplishment or milestone in the platform. Achievements encourage community participation and engagement.
§Belgian Context
- Promotes active participation in copropriété management
- Encourages use of community features (SEL, notice board, bookings)
- Recognizes contributions to building community
§Business Rules
- name must be 3-100 characters
- description must be 10-500 characters
- icon must be valid emoji or URL
- points_value must be 0-1000
- requirements stored as JSON for flexibility
Fields§
§id: Uuid§organization_id: Uuid§category: AchievementCategory§tier: AchievementTier§name: String§description: String§icon: String§points_value: i32§requirements: String§is_secret: bool§is_repeatable: bool§display_order: i32§created_at: DateTime<Utc>§updated_at: DateTime<Utc>Implementations§
Source§impl Achievement
impl Achievement
Sourcepub const MIN_NAME_LENGTH: usize = 3usize
pub const MIN_NAME_LENGTH: usize = 3usize
Minimum name length
Sourcepub const MAX_NAME_LENGTH: usize = 100usize
pub const MAX_NAME_LENGTH: usize = 100usize
Maximum name length
Sourcepub const MIN_DESCRIPTION_LENGTH: usize = 10usize
pub const MIN_DESCRIPTION_LENGTH: usize = 10usize
Minimum description length
Sourcepub const MAX_DESCRIPTION_LENGTH: usize = 500usize
pub const MAX_DESCRIPTION_LENGTH: usize = 500usize
Maximum description length
Sourcepub const MAX_POINTS_VALUE: i32 = 1_000i32
pub const MAX_POINTS_VALUE: i32 = 1_000i32
Maximum points value
Sourcepub fn new(
organization_id: Uuid,
category: AchievementCategory,
tier: AchievementTier,
name: String,
description: String,
icon: String,
points_value: i32,
requirements: String,
is_secret: bool,
is_repeatable: bool,
display_order: i32,
) -> Result<Self, String>
pub fn new( organization_id: Uuid, category: AchievementCategory, tier: AchievementTier, name: String, description: String, icon: String, points_value: i32, requirements: String, is_secret: bool, is_repeatable: bool, display_order: i32, ) -> Result<Self, String>
Create a new achievement
§Validation
- name must be 3-100 characters
- description must be 10-500 characters
- icon must not be empty
- points_value must be 0-1000
- requirements must not be empty
Sourcepub fn update(
&mut self,
name: Option<String>,
description: Option<String>,
icon: Option<String>,
points_value: Option<i32>,
requirements: Option<String>,
is_secret: Option<bool>,
is_repeatable: Option<bool>,
display_order: Option<i32>,
) -> Result<(), String>
pub fn update( &mut self, name: Option<String>, description: Option<String>, icon: Option<String>, points_value: Option<i32>, requirements: Option<String>, is_secret: Option<bool>, is_repeatable: Option<bool>, display_order: Option<i32>, ) -> Result<(), String>
Update achievement details
Sourcepub fn default_points_for_tier(tier: &AchievementTier) -> i32
pub fn default_points_for_tier(tier: &AchievementTier) -> i32
Calculate points for tier (helper for auto-calculation)
Sourcepub fn update_description(&mut self, description: String) -> Result<(), String>
pub fn update_description(&mut self, description: String) -> Result<(), String>
Update achievement description
Trait Implementations§
Source§impl Clone for Achievement
impl Clone for Achievement
Source§fn clone(&self) -> Achievement
fn clone(&self) -> Achievement
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for Achievement
impl Debug for Achievement
Source§impl<'de> Deserialize<'de> for Achievement
impl<'de> Deserialize<'de> for Achievement
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl From<Achievement> for AchievementResponseDto
impl From<Achievement> for AchievementResponseDto
Source§fn from(achievement: Achievement) -> Self
fn from(achievement: Achievement) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for Achievement
impl RefUnwindSafe for Achievement
impl Send for Achievement
impl Sync for Achievement
impl Unpin for Achievement
impl UnwindSafe for Achievement
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Chain<T> for T
impl<T> Chain<T> for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Fake for T
impl<T> Fake for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreCreates a shared type from an unshared type.