Migrated to bitflags

This commit is contained in:
2025-02-07 14:24:21 +01:00
parent cf379a1288
commit 07493b83a5
12 changed files with 177 additions and 64 deletions

View File

@@ -10,7 +10,10 @@ use sqlx::PgPool;
use crate::{
auth::{AuthError, Permissions},
database::model::Member as DbMember,
model::{member::Name, Member},
model::{
member::{Groups, Name, SwimGroups},
Member,
},
util::convert_vec,
AppState,
};
@@ -116,7 +119,7 @@ struct Row {
#[serde(rename = "E-mail")]
email: String,
#[serde(rename = "Verenigingssporten")]
hours: String,
swim_groups: String,
#[serde(rename = "Diploma dropdown 1")]
diploma: Option<String>,
}
@@ -161,22 +164,22 @@ impl Row {
members
}
fn hours_parsed(&self) -> Vec<String> {
let mut hours: Vec<String> = Vec::new();
fn swim_groups_parsed(&self) -> SwimGroups {
let mut swim_groups: Vec<String> = Vec::new();
let group_parts: Vec<&str> = self.hours.split(", ").collect();
let group_parts: Vec<&str> = self.swim_groups.split(", ").collect();
for group in group_parts {
let hour_parts: Vec<&str> = group.split(" - ").collect();
for part in hour_parts {
if &*part != "Groep" {
hours.push(part.to_string());
}
if let Some(group) = hour_parts.get(1) {
swim_groups.push(group.to_uppercase())
}
}
hours.into_iter().unique().collect()
let swim_groups_string = swim_groups.join("|");
bitflags::parser::from_str(&swim_groups_string).unwrap_or(SwimGroups::empty())
}
}
@@ -198,8 +201,8 @@ impl Into<Member> for Row {
name,
registration_token: None,
diploma: self.diploma.clone(),
hours: self.hours_parsed(),
groups: Vec::new(),
swim_groups: self.swim_groups_parsed(),
groups: Groups::empty(),
}
}
}
@@ -261,7 +264,7 @@ fn generate_diff(members_new: Vec<Member>, members_old: Vec<Member>) -> MembersD
name: new_member.name.clone(),
registration_token: old_member.registration_token,
diploma: new_member.diploma.clone(),
hours: new_member.hours.clone(),
swim_groups: new_member.swim_groups.clone(),
groups: old_member.groups,
})
} else {