backend/model/entity/
application_settings_impl.rs

1//! Contains the implementation of [`ApplicationSetting`].
2
3use diesel::pg::Pg;
4use diesel::prelude::*;
5use diesel::{debug_query, QueryResult};
6use diesel_async::{AsyncPgConnection, RunQueryDsl};
7use log::debug;
8
9use crate::model::dto::ApplicationSettingDto;
10use crate::model::entity::ApplicationSetting;
11use crate::schema::application_settings::{self, key as key_column};
12
13impl ApplicationSetting {
14    /// Fetch application setting by key from the database.
15    ///
16    /// # Errors
17    /// * Unknown, diesel doesn't say why it might error.
18    pub async fn find_by_key(
19        key: &str,
20        conn: &mut AsyncPgConnection,
21    ) -> QueryResult<ApplicationSettingDto> {
22        let query = application_settings::table.filter(key_column.eq(key));
23        debug!("{}", debug_query::<Pg, _>(&query));
24        query.first::<Self>(conn).await.map(Into::into)
25    }
26}