backend/model/entity/
blossoms_impl.rs

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