From 7ce183d6f8341f4e19620e6704baf0c794d1e11c Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 29 Jul 2022 18:10:05 +0800 Subject: [PATCH] Add soft delete of pages by updating page state to Deleted --- packages/api/src/elastic/pages.ts | 24 ++++++++++++------------ packages/api/src/elastic/types.ts | 6 +++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/api/src/elastic/pages.ts b/packages/api/src/elastic/pages.ts index 4dbc40fbe..9abffd52e 100644 --- a/packages/api/src/elastic/pages.ts +++ b/packages/api/src/elastic/pages.ts @@ -224,12 +224,16 @@ export const updatePage = async ( if (body.result !== 'updated') return false + if (page.state === ArticleSavingRequestStatus.Deleted) { + await ctx.pubsub.entityDeleted(EntityType.PAGE, id, ctx.uid) + return true + } + await ctx.pubsub.entityUpdated>( EntityType.PAGE, { ...page, id }, ctx.uid ) - return true } catch (e) { if ( @@ -255,11 +259,7 @@ export const deletePage = async ( refresh: ctx.refresh, }) - if (body.deleted === 0) return false - - await ctx.pubsub.entityDeleted(EntityType.PAGE, id, ctx.uid) - - return true + return body.deleted !== 0 } catch (e) { if ( e instanceof ResponseError && @@ -359,10 +359,10 @@ export const searchPages = async ( const sortOrder = sort?.order || SortOrder.DESCENDING // default sort by saved_at const sortField = sort?.by || SortBy.SAVED - const includeLabels = labelFilters.filter( + const includeLabels = labelFilters?.filter( (filter) => filter.type === LabelFilterType.INCLUDE ) - const excludeLabels = labelFilters.filter( + const excludeLabels = labelFilters?.filter( (filter) => filter.type === LabelFilterType.EXCLUDE ) @@ -407,16 +407,16 @@ export const searchPages = async ( if (readFilter !== ReadFilter.ALL) { appendReadFilter(body, readFilter) } - if (hasFilters.length > 0) { + if (hasFilters && hasFilters.length > 0) { appendHasFilters(body, hasFilters) } - if (includeLabels.length > 0) { + if (includeLabels && includeLabels.length > 0) { appendIncludeLabelFilter(body, includeLabels) } - if (excludeLabels.length > 0) { + if (excludeLabels && excludeLabels.length > 0) { appendExcludeLabelFilter(body, excludeLabels) } - if (dateFilters.length > 0) { + if (dateFilters && dateFilters.length > 0) { appendDateFilters(body, dateFilters) } if (termFilters) { diff --git a/packages/api/src/elastic/types.ts b/packages/api/src/elastic/types.ts index f4bf7b7c4..a601082fb 100644 --- a/packages/api/src/elastic/types.ts +++ b/packages/api/src/elastic/types.ts @@ -264,9 +264,9 @@ export interface PageSearchArgs { inFilter?: InFilter readFilter?: ReadFilter typeFilter?: PageType - labelFilters: LabelFilter[] - hasFilters: HasFilter[] - dateFilters: DateFilter[] + labelFilters?: LabelFilter[] + hasFilters?: HasFilter[] + dateFilters?: DateFilter[] termFilters?: FieldFilter[] matchFilters?: FieldFilter[] includePending?: boolean | null