diff --git a/sqlx-data.json b/sqlx-data.json index f3915cc37..afeaa8a26 100644 --- a/sqlx-data.json +++ b/sqlx-data.json @@ -747,6 +747,50 @@ "nullable": [] } }, + "3831c1b321e47690f1f54597506a0d43362eda9540c56acb19c06532bba50b01": { + "query": "\n SELECT id, user_id, role, permissions, accepted\n FROM team_members\n WHERE team_id = $1\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Int8" + }, + { + "ordinal": 1, + "name": "user_id", + "type_info": "Int8" + }, + { + "ordinal": 2, + "name": "role", + "type_info": "Varchar" + }, + { + "ordinal": 3, + "name": "permissions", + "type_info": "Int8" + }, + { + "ordinal": 4, + "name": "accepted", + "type_info": "Bool" + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false, + false, + false, + false, + false + ] + } + }, "389088b3ccff3a3c970aba3deef8831cca140b74ffc74e43a1162a9021428820": { "query": "\n SELECT f.id id, f.version_id version_id, f.filename filename, v.version_number version_number, v.mod_id mod_id FROM hashes h\n INNER JOIN files f ON h.file_id = f.id\n INNER JOIN versions v ON v.id = f.version_id\n WHERE h.algorithm = $2 AND h.hash = $1\n ", "describe": { @@ -2122,50 +2166,6 @@ ] } }, - "9f93c94dd5d4fe4fad9c3021099a84b8e0c8cd2f0c9458063453f2416010657c": { - "query": "\n SELECT id, user_id, role, permissions, accepted\n FROM team_members\n WHERE (team_id = $1 AND accepted = TRUE)\n ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "id", - "type_info": "Int8" - }, - { - "ordinal": 1, - "name": "user_id", - "type_info": "Int8" - }, - { - "ordinal": 2, - "name": "role", - "type_info": "Varchar" - }, - { - "ordinal": 3, - "name": "permissions", - "type_info": "Int8" - }, - { - "ordinal": 4, - "name": "accepted", - "type_info": "Bool" - } - ], - "parameters": { - "Left": [ - "Int8" - ] - }, - "nullable": [ - false, - false, - false, - false, - false - ] - } - }, "a28188c4840d0f3449379b3bba6b3c4af9483e01f50fd56785317398a59881ca": { "query": "\n SELECT files.id, files.url, files.filename, files.is_primary FROM files\n WHERE files.version_id = $1\n ", "describe": { diff --git a/src/database/models/team_item.rs b/src/database/models/team_item.rs index a3c4dd93f..a5d297438 100644 --- a/src/database/models/team_item.rs +++ b/src/database/models/team_item.rs @@ -93,7 +93,7 @@ impl TeamMember { " SELECT id, user_id, role, permissions, accepted FROM team_members - WHERE (team_id = $1 AND accepted = TRUE) + WHERE team_id = $1 ", id as TeamId, ) diff --git a/src/models/teams.rs b/src/models/teams.rs index 2b27cfd41..a2306cb63 100644 --- a/src/models/teams.rs +++ b/src/models/teams.rs @@ -51,4 +51,6 @@ pub struct TeamMember { pub role: String, /// A bitset containing the user's permissions in this team pub permissions: Option, + /// Whether the user has joined the team or is just invited to it + pub accepted: bool, } diff --git a/src/routes/teams.rs b/src/routes/teams.rs index 87c572759..b488ea385 100644 --- a/src/routes/teams.rs +++ b/src/routes/teams.rs @@ -30,6 +30,7 @@ pub async fn team_members_get( user_id: data.user_id.into(), role: data.role, permissions: Some(data.permissions), + accepted: data.accepted, }) .collect(); @@ -37,14 +38,20 @@ pub async fn team_members_get( } } - let team_members: Vec = members_data - .into_iter() - .map(|data| crate::models::teams::TeamMember { - user_id: data.user_id.into(), - role: data.role, - permissions: None, - }) - .collect(); + let mut team_members: Vec = Vec::new(); + + for team_member in members_data { + if team_member.accepted { + team_members.push( + crate::models::teams::TeamMember { + user_id: team_member.user_id.into(), + role: team_member.role, + permissions: None, + accepted: team_member.accepted + } + ) + } + } Ok(HttpResponse::Ok().json(team_members)) } diff --git a/src/routes/users.rs b/src/routes/users.rs index a041e9e5b..a3a90c949 100644 --- a/src/routes/users.rs +++ b/src/routes/users.rs @@ -182,6 +182,7 @@ pub async fn teams( } else { None }, + accepted: data.accepted }) .collect();