diff --git a/packages/api/src/resolvers/article/index.ts b/packages/api/src/resolvers/article/index.ts index 026cb7988..dc1489c9e 100644 --- a/packages/api/src/resolvers/article/index.ts +++ b/packages/api/src/resolvers/article/index.ts @@ -670,7 +670,7 @@ export const searchResolver = authorized< SearchSuccess, SearchError, QuerySearchArgs ->(async (_obj, params, { uid }) => { +>(async (_obj, params, { uid, log }) => { const startCursor = params.after || '' const first = Math.min(params.first || 10, 100) // limit to 100 items diff --git a/packages/api/src/resolvers/function_resolvers.ts b/packages/api/src/resolvers/function_resolvers.ts index b4ace7f7b..aa41b724d 100644 --- a/packages/api/src/resolvers/function_resolvers.ts +++ b/packages/api/src/resolvers/function_resolvers.ts @@ -33,6 +33,7 @@ import { wordsCount, } from '../utils/helpers' import { createImageProxyUrl } from '../utils/imageproxy' +import { logger } from '../utils/logger' import { contentConverter } from '../utils/parser' import { generateDownloadSignedUrl, @@ -515,7 +516,8 @@ export const functionResolvers = { ) { if (item.labels) return item.labels - return ctx.dataLoaders.labels.load(item.id) + const labels = await ctx.dataLoaders.labels.load(item.id) + return labels }, async recommendations( item: { diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index 9b5358cc8..b9e3aeb3e 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -302,12 +302,14 @@ export const buildQueryString = ( case InFilter.ALL: return null case InFilter.ARCHIVE: - return "(library_item.state = 'ARCHIVED' or (library_item.state != 'DELETED' and library_item.archived_at is not null))" + return `(library_item.state = 'ARCHIVED' + OR (library_item.state IN ('SUCCEEDED', 'ARCHIVED', 'PROCESSING', 'FAILED', 'CONTENT_NOT_FETCHED') + AND library_item.archived_at IS NOT NULL))` case InFilter.TRASH: // return only deleted pages within 14 days - return "(library_item.state = 'DELETED' AND library_item.deleted_at >= now() - interval '14 days')" + return "(library_item.state = 'DELETED' AND library_item.deleted_at >= NOW() - INTERVAL '14 days')" default: { - let sql = 'library_item.archived_at is null' + let sql = 'library_item.archived_at IS NULL' if (useFolders) { const param = `folder_${parameters.length}` const folderSql = escapeQueryWithParameters( @@ -664,7 +666,9 @@ export const createSearchQueryBuilder = ( } if (!args.includeDeleted) { - queryBuilder.andWhere("library_item.state <> 'DELETED'") + queryBuilder.andWhere( + "library_item.state IN ('SUCCEEDED', 'ARCHIVED', 'PROCESSING', 'FAILED', 'CONTENT_NOT_FETCHED')" + ) } if (queryString) { diff --git a/packages/db/migrations/0175.do.add_index_for_library_item_count.sql b/packages/db/migrations/0175.do.add_index_for_library_item_count.sql new file mode 100755 index 000000000..16ed3664f --- /dev/null +++ b/packages/db/migrations/0175.do.add_index_for_library_item_count.sql @@ -0,0 +1,7 @@ +-- Type: DO +-- Name: add_index_for_library_item_count +-- Description: Add index for counting user items in library_item table + +CREATE INDEX CONCURRENTLY + IF NOT EXISTS library_item_count_idx + ON omnivore.library_item (user_id, state, archived_at, folder); diff --git a/packages/db/migrations/0175.undo.add_index_for_library_item_count.sql b/packages/db/migrations/0175.undo.add_index_for_library_item_count.sql new file mode 100755 index 000000000..f2cf91f4f --- /dev/null +++ b/packages/db/migrations/0175.undo.add_index_for_library_item_count.sql @@ -0,0 +1,9 @@ +-- Type: UNDO +-- Name: add_index_for_library_item_count +-- Description: Add index for counting user items in library_item table + +BEGIN; + +DROP INDEX IF EXISTS omnivore.library_item_count_idx; + +COMMIT; diff --git a/packages/db/migrations/0176.do.drop_user_id_state_idx.sql b/packages/db/migrations/0176.do.drop_user_id_state_idx.sql new file mode 100755 index 000000000..0ad10f11d --- /dev/null +++ b/packages/db/migrations/0176.do.drop_user_id_state_idx.sql @@ -0,0 +1,9 @@ +-- Type: DO +-- Name: drop_library_item_user_id_state_idx +-- Description: Drop multiple-column index for user_id and state columns in library_item table + +BEGIN; + +DROP INDEX IF EXISTS omnivore.library_item_user_id_state_idx; + +COMMIT; diff --git a/packages/db/migrations/0176.undo.drop_user_id_state_idx.sql b/packages/db/migrations/0176.undo.drop_user_id_state_idx.sql new file mode 100755 index 000000000..0fd27bb95 --- /dev/null +++ b/packages/db/migrations/0176.undo.drop_user_id_state_idx.sql @@ -0,0 +1,7 @@ +-- Type: UNDO +-- Name: drop_library_item_user_id_state_idx +-- Description: Drop multiple-column index for user_id and state columns in library_item table + +CREATE INDEX CONCURRENTLY + IF NOT EXISTS library_item_user_id_state_idx + ON omnivore.library_item (user_id, state);