mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
add labels in search query
This commit is contained in:
parent
edb9339897
commit
fc18004a5d
3 changed files with 20 additions and 5 deletions
|
|
@ -403,6 +403,7 @@ class UserArticleModel extends DataModel<
|
|||
inFilter: InFilter
|
||||
readFilter: ReadFilter
|
||||
typeFilter: PageType | undefined
|
||||
labelFilters?: string[]
|
||||
},
|
||||
userId: string,
|
||||
tx = this.kx,
|
||||
|
|
@ -441,6 +442,16 @@ class UserArticleModel extends DataModel<
|
|||
}
|
||||
}
|
||||
|
||||
// search by labels using lowercase
|
||||
if (args.labelFilters) {
|
||||
queryPromise
|
||||
.innerJoin(Table.LINK_LABELS, 'link_labels.link_id', 'links.id')
|
||||
.innerJoin(Table.LABELS, 'labels.id', 'link_labels.label_id')
|
||||
.whereRaw('LOWER(omnivore.labels.name) = ANY(?)', [args.labelFilters])
|
||||
}
|
||||
|
||||
console.log(queryPromise.toString())
|
||||
|
||||
if (notNullField) {
|
||||
queryPromise.whereNotNull(notNullField)
|
||||
}
|
||||
|
|
@ -469,12 +480,11 @@ class UserArticleModel extends DataModel<
|
|||
.orderBy('omnivore.links.id', sortOrder)
|
||||
.limit(limit)
|
||||
|
||||
// console.log('query', queryPromise.toString())
|
||||
const rows = await queryPromise
|
||||
|
||||
for (const row of rows) {
|
||||
this.loader.prime(row.id, row)
|
||||
}
|
||||
|
||||
return [rows, parseInt(totalCount as string)]
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -539,8 +539,8 @@ export const getArticlesResolver = authorized<
|
|||
const first = params.first || 10
|
||||
|
||||
// Perform basic sanitization. Right now we just allow alphanumeric, space and quote
|
||||
// so queries can contain phrases like "human race". In the future we will need to
|
||||
// split out terms like "label:unread".
|
||||
// so queries can contain phrases like "human race";
|
||||
// We can also split out terms like "label:unread".
|
||||
const searchQuery = parseSearchQuery(params.query || undefined)
|
||||
|
||||
analytics.track({
|
||||
|
|
@ -551,6 +551,7 @@ export const getArticlesResolver = authorized<
|
|||
inFilter: searchQuery.inFilter,
|
||||
readFilter: searchQuery.readFilter,
|
||||
typeFilter: searchQuery.typeFilter,
|
||||
labelFilters: searchQuery.labelFilters,
|
||||
env: env.server.apiEnv,
|
||||
},
|
||||
})
|
||||
|
|
@ -566,6 +567,7 @@ export const getArticlesResolver = authorized<
|
|||
inFilter: searchQuery.inFilter,
|
||||
readFilter: searchQuery.readFilter,
|
||||
typeFilter: searchQuery.typeFilter,
|
||||
labelFilters: searchQuery.labelFilters,
|
||||
},
|
||||
claims.uid,
|
||||
tx,
|
||||
|
|
|
|||
|
|
@ -86,7 +86,10 @@ const parseLabelFilters = (
|
|||
return labelFilters
|
||||
}
|
||||
|
||||
return labelFilters ? labelFilters.concat(str) : [str]
|
||||
// use lower case for label names
|
||||
const label = str.toLowerCase()
|
||||
|
||||
return labelFilters ? labelFilters.concat(label) : [label]
|
||||
}
|
||||
|
||||
export const parseSearchQuery = (query: string | undefined): SearchFilter => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue