use std::env;
use crate::{
domain::authorization::{
authorize_access_to_tmc_server, get_user_from_moocfi_by_tmc_access_token_and_upstream_id,
},
prelude::*,
};
use models::users::User;
#[instrument(skip(pool))]
pub async fn get_user_by_upstream_id(
upstream_id: web::Path<i32>,
pool: web::Data<PgPool>,
request: HttpRequest,
) -> ControllerResult<web::Json<User>> {
let mut conn = pool.acquire().await?;
let token = authorize_access_to_tmc_server(&request).await?;
let tmc_access_token = env::var("TMC_ACCESS_TOKEN").expect("TMC_ACCESS_TOKEN must be defined");
let user = get_user_from_moocfi_by_tmc_access_token_and_upstream_id(
&mut conn,
&tmc_access_token,
&upstream_id,
)
.await?;
token.authorized_ok(web::Json(user))
}
pub fn _add_routes(cfg: &mut ServiceConfig) {
cfg.route("/{user_id}", web::get().to(get_user_by_upstream_id));
}