Skip to content

Commit

Permalink
Merge pull request #3966 from omnivore-app/feature/add-index-for-arch…
Browse files Browse the repository at this point in the history
…ived-at

feature/add index for archived at and folder
  • Loading branch information
sywhb committed May 20, 2024
2 parents a0284da + a3fe526 commit b6c150a
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 6 deletions.
2 changes: 1 addition & 1 deletion packages/api/src/resolvers/article/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
4 changes: 3 additions & 1 deletion packages/api/src/resolvers/function_resolvers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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: {
Expand Down
12 changes: 8 additions & 4 deletions packages/api/src/services/library_item.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
Original file line number Diff line number Diff line change
@@ -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;
9 changes: 9 additions & 0 deletions packages/db/migrations/0176.do.drop_user_id_state_idx.sql
Original file line number Diff line number Diff line change
@@ -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;
7 changes: 7 additions & 0 deletions packages/db/migrations/0176.undo.drop_user_id_state_idx.sql
Original file line number Diff line number Diff line change
@@ -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);

0 comments on commit b6c150a

Please sign in to comment.