backend/model/entity/
users_impl.rs

1//! Contains the implementation of [`Users`].
2
3use diesel::{debug_query, pg::Pg, QueryResult};
4use diesel_async::{AsyncPgConnection, RunQueryDsl};
5use log::debug;
6use uuid::Uuid;
7
8use crate::{model::dto::UsersDto, schema::users};
9
10use super::Users;
11
12impl Users {
13    /// Create a user data entry for a new user.
14    ///
15    /// # Errors
16    /// * Unknown, diesel doesn't say why it might error.
17    pub async fn create(
18        user_data: UsersDto,
19        user_id: Uuid,
20        conn: &mut AsyncPgConnection,
21    ) -> QueryResult<UsersDto> {
22        let user_data = Self::from((user_data, user_id));
23        let query = diesel::insert_into(users::table).values(&user_data);
24        debug!("{}", debug_query::<Pg, _>(&query));
25        query.get_result::<Self>(conn).await.map(Into::into)
26    }
27}