forked from didirus/AstralRinth
* v3_reroute 404 error * hash change * fixed issue with error conversion * added new model confirmation tests + title name change * renaming, fields * owner; test changes * clippy prepare * fmt * merge fixes * clippy * working merge * revs * merge fixes
42 lines
1.3 KiB
Rust
42 lines
1.3 KiB
Rust
use rust_decimal::Decimal;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
use crate::models::{
|
|
ids::TeamId,
|
|
teams::{ProjectPermissions, TeamMember},
|
|
users::User,
|
|
};
|
|
|
|
/// A member of a team
|
|
#[derive(Serialize, Deserialize, Clone)]
|
|
pub struct LegacyTeamMember {
|
|
pub role: String,
|
|
// is_owner removed, and role hardcoded to Owner if true,
|
|
pub team_id: TeamId,
|
|
pub user: User,
|
|
pub permissions: Option<ProjectPermissions>,
|
|
pub accepted: bool,
|
|
|
|
#[serde(with = "rust_decimal::serde::float_option")]
|
|
pub payouts_split: Option<Decimal>,
|
|
pub ordering: i64,
|
|
}
|
|
|
|
impl LegacyTeamMember {
|
|
pub fn from(team_member: TeamMember) -> Self {
|
|
LegacyTeamMember {
|
|
role: match (team_member.is_owner, team_member.role.as_str()) {
|
|
(true, _) => "Owner".to_string(),
|
|
(false, "Owner") => "Member".to_string(), // The odd case of a non-owner with the owner role should show as 'Member'
|
|
(false, role) => role.to_string(),
|
|
},
|
|
team_id: team_member.team_id,
|
|
user: team_member.user,
|
|
permissions: team_member.permissions,
|
|
accepted: team_member.accepted,
|
|
payouts_split: team_member.payouts_split,
|
|
ordering: team_member.ordering,
|
|
}
|
|
}
|
|
}
|