allow use:folders in search string for new clients to filter inbox items

This commit is contained in:
Hongbo Wu
2023-12-05 20:40:02 +08:00
parent 312bf93d9b
commit 29e2bf45e3
2 changed files with 15 additions and 3 deletions

View File

@ -658,6 +658,7 @@ export const searchResolver = authorized<
includeContent: !!params.includeContent,
includeDeleted: params.query?.includes('in:trash'),
query: params.query,
useFolders: params.query?.includes('use:folders'),
},
uid
)

View File

@ -153,7 +153,8 @@ export const buildQuery = (
searchQuery: LiqeQuery,
parameters: ObjectLiteral[] = [],
selects: Select[] = [],
orders: { by: string; order?: SortOrder }[] = []
orders: { by: string; order?: SortOrder }[] = [],
useFolders = false
) => {
const escapeQueryWithParameters = (
query: string,
@ -220,9 +221,13 @@ export const buildQuery = (
// return only deleted pages within 14 days
return "library_item.deleted_at >= now() - interval '14 days'"
default: {
if (!useFolders) {
throw new Error(`Unexpected keyword: ${folder}`)
}
const param = `folder_${parameters.length}`
return escapeQueryWithParameters(
`library_item.folder = :${param}`,
`(library_item.folder = :${param} AND library_item.archived_at IS NULL)`,
{ [param]: folder }
)
}
@ -653,7 +658,13 @@ export const searchLibraryItems = async (
const parameters: ObjectLiteral[] = []
const selects: Select[] = []
const orders: Sort[] = []
const whereClause = buildQuery(searchQuery, parameters, selects, orders)
const whereClause = buildQuery(
searchQuery,
parameters,
selects,
orders,
args.useFolders
)
whereClause &&
queryBuilder
.andWhere(whereClause)