X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fdb_schema%2Fsrc%2Fimpls%2Flanguage.rs;h=53aadbac80d3b1d75e2ea5f8b2c4a7d02eeb8c0f;hb=92568956353f21649ed9aff68b42699c9d036f30;hp=78898bcac01275aefb4a9e0ed7e6cb8d60305dcc;hpb=6f3bf4634b0e1cf529c4683d6ee971917e2bfa50;p=lemmy.git diff --git a/crates/db_schema/src/impls/language.rs b/crates/db_schema/src/impls/language.rs index 78898bca..53aadbac 100644 --- a/crates/db_schema/src/impls/language.rs +++ b/crates/db_schema/src/impls/language.rs @@ -6,40 +6,34 @@ use crate::{ utils::{get_conn, DbPool}, }; use diesel::{result::Error, QueryDsl}; -use diesel_async::{AsyncPgConnection, RunQueryDsl}; +use diesel_async::RunQueryDsl; impl Language { - pub async fn read_all(pool: &DbPool) -> Result, Error> { + pub async fn read_all(pool: &mut DbPool<'_>) -> Result, Error> { let conn = &mut get_conn(pool).await?; - Self::read_all_conn(conn).await - } - - pub async fn read_all_conn(conn: &mut AsyncPgConnection) -> Result, Error> { language.load::(conn).await } - pub async fn read_from_id(pool: &DbPool, id_: LanguageId) -> Result { + pub async fn read_from_id(pool: &mut DbPool<'_>, id_: LanguageId) -> Result { let conn = &mut get_conn(pool).await?; language.filter(id.eq(id_)).first::(conn).await } - pub async fn read_id_from_code(pool: &DbPool, code_: &str) -> Result { - let conn = &mut get_conn(pool).await?; - Ok( - language - .filter(code.eq(code_)) - .first::(conn) - .await? - .id, - ) - } - - pub async fn read_id_from_code_opt( - pool: &DbPool, + /// Attempts to find the given language code and return its ID. If not found, returns none. + pub async fn read_id_from_code( + pool: &mut DbPool<'_>, code_: Option<&str>, ) -> Result, Error> { if let Some(code_) = code_ { - Ok(Some(Language::read_id_from_code(pool, code_).await?)) + let conn = &mut get_conn(pool).await?; + Ok( + language + .filter(code.eq(code_)) + .first::(conn) + .await + .map(|l| l.id) + .ok(), + ) } else { Ok(None) } @@ -48,6 +42,9 @@ impl Language { #[cfg(test)] mod tests { + #![allow(clippy::unwrap_used)] + #![allow(clippy::indexing_slicing)] + use crate::{source::language::Language, utils::build_db_pool_for_tests}; use serial_test::serial; @@ -55,6 +52,7 @@ mod tests { #[serial] async fn test_languages() { let pool = &build_db_pool_for_tests().await; + let pool = &mut pool.into(); let all = Language::read_all(pool).await.unwrap();