/*
* This file is part of laurelin/api
* Copyright (C) 2023 Jonni Liljamo <jonni@liljamo.com>
*
* Licensed under GPL-3.0-only.
* See LICENSE for licensing information.
*/
use diesel::{ExpressionMethods, PgConnection, QueryDsl, RunQueryDsl};
use laurelin_schema::schema::users;
use laurelin_shared::{
error::api::APIError,
types::user::{User, UserPub},
};
use uuid::Uuid;
pub(crate) fn info(conn: &mut PgConnection, user_id: &str) -> Result<UserPub, APIError> {
let user = match users::table
.filter(users::id.eq(&Uuid::try_parse(user_id).unwrap())) // TODO: handle
.first::<User>(conn)
{
Err(_) => {
return Err(APIError::UserNotFound);
}
Ok(user) => user,
};
Ok(UserPub::from_user(&user))
}