diff --git a/deepwell/src/api.rs b/deepwell/src/api.rs index ecdf020e53..5f5fd75434 100644 --- a/deepwell/src/api.rs +++ b/deepwell/src/api.rs @@ -227,7 +227,7 @@ async fn build_module(app_state: ServerState) -> anyhow::Result, params: Params<'static>, -) -> Result> { +) -> Result> { let GetPageSlug { site_id, slug } = params.parse()?; info!("Getting deleted page {slug} in site ID {site_id}"); - let get_deleted_page = PageService::get_deleted_slug(ctx, site_id, slug) + let get_deleted_page = PageService::get_deleted_by_slug(ctx, site_id, &slug) .await? .into_iter() .map(|page| build_page_deleted_output(ctx, page)); @@ -261,7 +261,7 @@ async fn build_page_output( async fn build_page_deleted_output( ctx: &ServiceContext<'_>, page: PageModel, -) -> Result> { +) -> Result> { // Get page revision let revision = PageRevisionService::get_latest(ctx, page.site_id, page.page_id).await?; @@ -270,11 +270,11 @@ async fn build_page_deleted_output( let rating = ScoreService::score(ctx, page.page_id).await?; // Build result struct - Ok(Some(GetPageDeletedOutput { + Ok(Some(GetDeletedPageOutput { page_id: page.page_id, page_created_at: page.created_at, page_updated_at: page.updated_at, - page_deleted_at: page.deleted_at, + page_deleted_at: page.deleted_at.expect("Page should be deleted"), page_revision_count: revision.revision_number, site_id: page.site_id, discussion_thread_id: page.discussion_thread_id, diff --git a/deepwell/src/services/page/service.rs b/deepwell/src/services/page/service.rs index caf1a53f25..c55c9d3c77 100644 --- a/deepwell/src/services/page/service.rs +++ b/deepwell/src/services/page/service.rs @@ -566,20 +566,21 @@ impl PageService { } /// Gets all deleted pages that match the provided slug. - pub async fn get_deleted_slug( + pub async fn get_deleted_by_slug( ctx: &ServiceContext<'_>, site_id: i64, - slug: String, + slug: &str, ) -> Result> { let txn = ctx.transaction(); let pages = { Page::find() .filter( Condition::all() - .add(page::Column::Slug.eq(trim_default(&slug))) + .add(page::Column::Slug.eq(trim_default(slug))) .add(page::Column::SiteId.eq(site_id)) .add(page::Column::DeletedAt.is_not_null()), ) + .order_by_desc(page::Column::CreatedAt) .all(txn) .await? }; diff --git a/deepwell/src/services/page/structs.rs b/deepwell/src/services/page/structs.rs index b6ab261dc5..0b3967f2e2 100644 --- a/deepwell/src/services/page/structs.rs +++ b/deepwell/src/services/page/structs.rs @@ -120,11 +120,11 @@ pub struct GetPageOutput { } #[derive(Serialize, Debug, Clone)] -pub struct GetPageDeletedOutput { +pub struct GetDeletedPageOutput { pub page_id: i64, pub page_created_at: OffsetDateTime, pub page_updated_at: Option, - pub page_deleted_at: Option, + pub page_deleted_at: OffsetDateTime, pub page_revision_count: i32, pub site_id: i64, pub discussion_thread_id: Option, diff --git a/framerail/src/lib/server/deepwell/page.ts b/framerail/src/lib/server/deepwell/page.ts index fa5580c5a7..1016dc9909 100644 --- a/framerail/src/lib/server/deepwell/page.ts +++ b/framerail/src/lib/server/deepwell/page.ts @@ -194,7 +194,7 @@ export async function pageParentGet( } export async function pageDeletedGet(siteId: number, slug: string): Promise { - return client.request("page_get_deleted_slug", { + return client.request("page_get_deleted", { site_id: siteId, slug })