mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
fix bulk action query limited to 1000 char
This commit is contained in:
parent
d42f257f9e
commit
ed29721728
2 changed files with 36 additions and 17 deletions
|
|
@ -822,8 +822,12 @@ export const bulkActionResolver = authorized<
|
|||
},
|
||||
})
|
||||
|
||||
// the query size is limited to 255 characters
|
||||
if (!query || query.length > 255) {
|
||||
// the query size is limited to 1000 characters
|
||||
if (!query || query.length > 1000) {
|
||||
log.error('bulkActionResolver error', {
|
||||
error: 'QueryTooLong',
|
||||
query,
|
||||
})
|
||||
return { errorCodes: [BulkActionErrorCode.BadRequest] }
|
||||
}
|
||||
|
||||
|
|
@ -837,7 +841,16 @@ export const bulkActionResolver = authorized<
|
|||
labels = await findLabelsByIds(labelIds, uid)
|
||||
}
|
||||
|
||||
await updateLibraryItems(action, query, uid, labels, args)
|
||||
await updateLibraryItems(
|
||||
action,
|
||||
{
|
||||
query,
|
||||
useFolders: query.includes('use:folders'),
|
||||
},
|
||||
uid,
|
||||
labels,
|
||||
args
|
||||
)
|
||||
|
||||
return { success: true }
|
||||
} catch (error) {
|
||||
|
|
|
|||
|
|
@ -80,11 +80,11 @@ export interface SearchResultItem {
|
|||
}
|
||||
|
||||
export enum SortBy {
|
||||
SAVED = 'saved_at',
|
||||
UPDATED = 'updated_at',
|
||||
PUBLISHED = 'published_at',
|
||||
READ = 'read_at',
|
||||
WORDS_COUNT = 'word_count',
|
||||
SAVED = 'saved',
|
||||
UPDATED = 'updated',
|
||||
PUBLISHED = 'published',
|
||||
READ = 'read',
|
||||
WORDS_COUNT = 'wordsCount',
|
||||
}
|
||||
|
||||
export enum SortOrder {
|
||||
|
|
@ -102,6 +102,10 @@ interface Select {
|
|||
alias?: string
|
||||
}
|
||||
|
||||
const paramtersToObject = (parameters: ObjectLiteral[]) => {
|
||||
return parameters.reduce((a, b) => ({ ...a, ...b }), {})
|
||||
}
|
||||
|
||||
export const sortParamsToSort = (
|
||||
sortParams: InputMaybe<SortParams> | undefined
|
||||
) => {
|
||||
|
|
@ -688,7 +692,7 @@ export const searchLibraryItems = async (
|
|||
// add where clause from query
|
||||
queryBuilder
|
||||
.andWhere(query)
|
||||
.setParameters(parameters.reduce((a, b) => ({ ...a, ...b }), {}))
|
||||
.setParameters(paramtersToObject(parameters))
|
||||
}
|
||||
|
||||
const count = await queryBuilder.getCount()
|
||||
|
|
@ -1011,7 +1015,7 @@ export const countByCreatedAt = async (
|
|||
|
||||
export const updateLibraryItems = async (
|
||||
action: BulkActionType,
|
||||
query: string,
|
||||
searchArgs: SearchArgs,
|
||||
userId: string,
|
||||
labels?: Label[],
|
||||
args?: unknown
|
||||
|
|
@ -1065,19 +1069,21 @@ export const updateLibraryItems = async (
|
|||
throw new Error('Invalid bulk action')
|
||||
}
|
||||
|
||||
const searchQuery = parseSearchQuery(query)
|
||||
if (!searchArgs.query) {
|
||||
throw new Error('Search query is required')
|
||||
}
|
||||
|
||||
const searchQuery = parseSearchQuery(searchArgs.query)
|
||||
const parameters: ObjectLiteral[] = []
|
||||
const query = buildQuery(searchQuery, parameters)
|
||||
|
||||
await authTrx(async (tx) => {
|
||||
const queryBuilder = tx
|
||||
.createQueryBuilder(LibraryItem, 'library_item')
|
||||
.where('library_item.user_id = :userId', { userId })
|
||||
|
||||
const parameters: ObjectLiteral[] = []
|
||||
const whereClause = buildQuery(searchQuery, parameters)
|
||||
if (whereClause) {
|
||||
queryBuilder
|
||||
.andWhere(whereClause)
|
||||
.setParameters(parameters.reduce((a, b) => ({ ...a, ...b }), {}))
|
||||
if (query) {
|
||||
queryBuilder.andWhere(query).setParameters(paramtersToObject(parameters))
|
||||
}
|
||||
|
||||
if (addLabels) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue