Add way to fetch team members (#89)

* Add way to fetch team members, fix files not being returned with version route

* Make it compile

* Fixes

* Use default error handling
This commit is contained in:
Geometrically
2020-10-21 12:30:35 -07:00
committed by GitHub
parent e966ef96e5
commit 1ff8c908b8
6 changed files with 105 additions and 208 deletions

View File

@@ -6,6 +6,7 @@ mod mod_creation;
mod mods;
mod not_found;
mod tags;
mod teams;
mod users;
mod version_creation;
mod versions;
@@ -52,6 +53,10 @@ pub fn users_config(cfg: &mut web::ServiceConfig) {
);
}
pub fn teams_config(cfg: &mut web::ServiceConfig) {
cfg.service(web::scope("team").service(teams::team_members_get));
}
#[derive(thiserror::Error, Debug)]
pub enum ApiError {
#[error("Internal server error")]

25
src/routes/teams.rs Normal file
View File

@@ -0,0 +1,25 @@
use crate::database::models::TeamMember;
use crate::models::teams::TeamId;
use crate::routes::ApiError;
use actix_web::{get, web, HttpResponse};
use sqlx::PgPool;
#[get("{id}/members")]
pub async fn team_members_get(
info: web::Path<(TeamId,)>,
pool: web::Data<PgPool>,
) -> Result<HttpResponse, ApiError> {
let id = info.into_inner().0;
let members_data = TeamMember::get_from_team(id.into(), &**pool).await?;
let team_members: Vec<crate::models::teams::TeamMember> = members_data
.into_iter()
.map(|data| crate::models::teams::TeamMember {
user_id: data.user_id.into(),
name: data.name,
role: data.role,
})
.collect();
Ok(HttpResponse::Ok().json(team_members))
}