mirror of
https://github.com/lifegpc/pixiv_downloader.git
synced 2026-06-06 05:49:01 +08:00
If push task not found, return 404 instead of 500
This commit is contained in:
@@ -57,12 +57,12 @@ impl From<SqliteError> for PixivDownloaderDbError {
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "db_sqlite", feature = "server"))]
|
||||
pub trait Optional2Extension<T> {
|
||||
fn optional2(self) -> Result<Option<T>, PixivDownloaderDbError>;
|
||||
pub trait Optional2Extension<T, E> {
|
||||
fn optional2(self) -> Result<Option<T>, E>;
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "db_sqlite", feature = "server"))]
|
||||
impl<T> Optional2Extension<T> for Result<T, PixivDownloaderDbError> {
|
||||
impl<T> Optional2Extension<T, PixivDownloaderDbError> for Result<T, PixivDownloaderDbError> {
|
||||
fn optional2(self) -> Result<Option<T>, PixivDownloaderDbError> {
|
||||
match self {
|
||||
Ok(v) => Ok(Some(v)),
|
||||
@@ -80,6 +80,22 @@ impl<T> Optional2Extension<T> for Result<T, PixivDownloaderDbError> {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "db_sqlite", feature = "server"))]
|
||||
impl<T> Optional2Extension<T, SqliteError> for Result<T, SqliteError> {
|
||||
fn optional2(self) -> Result<Option<T>, SqliteError> {
|
||||
match self {
|
||||
Ok(v) => Ok(Some(v)),
|
||||
Err(e) => match e {
|
||||
SqliteError::DbError(e) => match e {
|
||||
rusqlite::Error::QueryReturnedNoRows => Ok(None),
|
||||
_ => Err(SqliteError::DbError(e)),
|
||||
},
|
||||
_ => Err(e),
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "db_sqlite"))]
|
||||
compile_error!("No database backend is enabled.");
|
||||
|
||||
|
||||
@@ -383,9 +383,9 @@ impl PixivDownloaderSqlite {
|
||||
}
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
async fn get_push_task(&self, id: u64) -> Result<Option<PushTask>, PixivDownloaderDbError> {
|
||||
async fn get_push_task(&self, id: u64) -> Result<Option<PushTask>, SqliteError> {
|
||||
let con = self.db.lock().await;
|
||||
con.query_row_and_then::<PushTask, PixivDownloaderDbError, _, _>(
|
||||
con.query_row_and_then::<PushTask, SqliteError, _, _>(
|
||||
"SELECT * FROM push_task WHERE id = ?;",
|
||||
[id],
|
||||
|row| {
|
||||
|
||||
@@ -3,4 +3,5 @@ pub enum SqliteError {
|
||||
DbError(rusqlite::Error),
|
||||
DatabaseVersionTooNew,
|
||||
UserNameAlreadyExists,
|
||||
SerdeError(serde_json::Error),
|
||||
}
|
||||
|
||||
@@ -105,7 +105,8 @@ impl PushContext {
|
||||
.db
|
||||
.get_push_task(id)
|
||||
.await
|
||||
.try_err3(500, "Failed to get push task:")?;
|
||||
.try_err3(500, "Failed to get push task:")?
|
||||
.try_err3(404, "Push task not found.")?;
|
||||
Ok(serde_json::to_value(re).try_err3(500, "Failed to serialize result:")?)
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user