mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-11-30 09:02:24 +00:00
Simplify handling of NotFound SQL errors (fixes #4633)
This commit is contained in:
parent
026e23cf32
commit
4b250cfe08
|
@ -40,10 +40,7 @@ pub async fn get_post(
|
||||||
};
|
};
|
||||||
|
|
||||||
// Check to see if the person is a mod or admin, to show deleted / removed
|
// Check to see if the person is a mod or admin, to show deleted / removed
|
||||||
let community_id = Post::read(&mut context.pool(), post_id)
|
let community_id = Post::read_xx(&mut context.pool(), post_id).await?.community_id;
|
||||||
.await?
|
|
||||||
.ok_or(LemmyErrorType::CouldntFindPost)?
|
|
||||||
.community_id;
|
|
||||||
|
|
||||||
let is_mod_or_admin = is_mod_or_admin_opt(
|
let is_mod_or_admin = is_mod_or_admin_opt(
|
||||||
&mut context.pool(),
|
&mut context.pool(),
|
||||||
|
|
|
@ -68,6 +68,10 @@ impl Crud for Post {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Post {
|
impl Post {
|
||||||
|
pub async fn read_xx(pool: &mut DbPool<'_>, id: PostId) -> Result<Self, Error> {
|
||||||
|
let conn = &mut *get_conn(pool).await?;
|
||||||
|
post::table.find(id).first(conn).await
|
||||||
|
}
|
||||||
pub async fn insert_apub(
|
pub async fn insert_apub(
|
||||||
pool: &mut DbPool<'_>,
|
pool: &mut DbPool<'_>,
|
||||||
timestamp: DateTime<Utc>,
|
timestamp: DateTime<Utc>,
|
||||||
|
|
|
@ -211,8 +211,12 @@ cfg_if! {
|
||||||
{
|
{
|
||||||
fn from(t: T) -> Self {
|
fn from(t: T) -> Self {
|
||||||
let cause = t.into();
|
let cause = t.into();
|
||||||
|
let error_type = match cause.downcast_ref::<diesel::result::Error>() {
|
||||||
|
Some(&diesel::NotFound) => LemmyErrorType::CouldntFindPost,
|
||||||
|
_ => LemmyErrorType::Unknown(format!("{}", &cause))
|
||||||
|
};
|
||||||
LemmyError {
|
LemmyError {
|
||||||
error_type: LemmyErrorType::Unknown(format!("{}", &cause)),
|
error_type,
|
||||||
inner: cause,
|
inner: cause,
|
||||||
context: Backtrace::capture(),
|
context: Backtrace::capture(),
|
||||||
}
|
}
|
||||||
|
@ -323,6 +327,17 @@ cfg_if! {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_convert_diesel_errors() {
|
||||||
|
let not_found_error = LemmyError::from(diesel::NotFound);
|
||||||
|
assert_eq!(LemmyErrorType::CouldntFindPost, not_found_error.error_type);
|
||||||
|
assert_eq!(404, not_found_error.status_code());
|
||||||
|
|
||||||
|
let other_error = LemmyError::from(diesel::result::Error::NotInTransaction);
|
||||||
|
assert!(matches!(other_error.error_type, LemmyErrorType::Unknown{..}));
|
||||||
|
assert_eq!(400, other_error.status_code());
|
||||||
|
}
|
||||||
|
|
||||||
/// Check if errors match translations. Disabled because many are not translated at all.
|
/// Check if errors match translations. Disabled because many are not translated at all.
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore]
|
#[ignore]
|
||||||
|
|
Loading…
Reference in a new issue