Merge pull request #3966 from omnivore-app/feature/add-index-for-archived-at

feature/add index for archived at and folder
This commit is contained in:
Hongbo Wu
2024-05-20 12:08:27 +08:00
committed by GitHub
7 changed files with 44 additions and 6 deletions

View File

@ -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

View File

@ -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: {

View File

@ -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) {

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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);