diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index 28645c396..d405397cf 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -42,7 +42,6 @@ export interface SearchArgs { recommendedBy?: string includeContent?: boolean noFilters?: NoFilter[] - subscription?: string } export interface SearchResultItem { @@ -257,12 +256,6 @@ const buildWhereClause = ( } ) } - - if (args.subscription) { - queryBuilder.andWhere('lower(library_item.subscription) = :subscription', { - subscription: args.subscription.toLowerCase(), - }) - } } export const searchLibraryItems = async ( diff --git a/packages/api/src/utils/search.ts b/packages/api/src/utils/search.ts index d25abac53..5bbe09cde 100644 --- a/packages/api/src/utils/search.ts +++ b/packages/api/src/utils/search.ts @@ -40,7 +40,6 @@ export interface SearchFilter { ids: string[] recommendedBy?: string noFilters: NoFilter[] - subscription?: string } export enum LabelFilterType { @@ -273,6 +272,12 @@ const parseFieldFilter = ( field: 'item_language', value, } + case 'SUBSCRIPTION': + case 'RSS': + return { + field: 'subscription', + value, + } } return { @@ -419,11 +424,9 @@ export const parseSearchQuery = (query: string | undefined): SearchFilter => { dateFilter && result.dateFilters.push(dateFilter) break } + // term filters case 'subscription': case 'rss': - result.subscription = parseStringValue(keyword.value) - break - // term filters case 'language': { const fieldFilter = parseFieldFilter(keyword.keyword, keyword.value) fieldFilter && result.termFilters.push(fieldFilter) diff --git a/packages/api/test/resolvers/article.test.ts b/packages/api/test/resolvers/article.test.ts index 08311ef19..d29c7677d 100644 --- a/packages/api/test/resolvers/article.test.ts +++ b/packages/api/test/resolvers/article.test.ts @@ -1135,6 +1135,59 @@ describe('Article API', () => { expect(res.body.data.search.edges[0].node.id).to.eq(items[0].id) }) }) + + context( + 'when rss:feed in:archive is in the query', + () => { + let items: LibraryItem[] = [] + + before(async () => { + keyword = 'rss:feed in:archive' + // Create some test items + items = await createLibraryItems( + [ + { + user, + title: 'test title 1', + readableContent: '

test 1

', + slug: 'test slug 1', + originalUrl: `${url}/test1`, + archivedAt: new Date(), + subscription: 'feed', + }, + { + user, + title: 'test title 2', + readableContent: '

test 2

', + slug: 'test slug 2', + originalUrl: `${url}/test2`, + subscription: 'feed', + }, + { + user, + title: 'test title 3', + readableContent: '

test 3

', + slug: 'test slug 3', + originalUrl: `${url}/test3`, + archivedAt: new Date(), + }, + ], + user.id + ) + }) + + after(async () => { + await deleteLibraryItems(items, user.id) + }) + + it('returns archived feed items', async () => { + const res = await graphqlRequest(query, authToken).expect(200) + + expect(res.body.data.search.pageInfo.totalCount).to.eq(1) + expect(res.body.data.search.edges[0].node.id).to.eq(items[0].id) + }) + } + ) }) describe('TypeaheadSearch API', () => {