mirror of
https://github.com/rocky-linux/peridot.git
synced 2024-12-20 17:58:29 +00:00
Apollo: Keyword search now does pagination correctly
Previously there was an outer query to further filter using CVEs and keyword, but that broke the pagination. All filtering is now moved to the inner layer and the outer layer has been removed. Also add search by advisory name.
This commit is contained in:
parent
ab5ae64ef8
commit
93304aca7b
@ -104,10 +104,6 @@ func (a *Access) GetAllAdvisories(filters *apollopb.AdvisoryFilters, page int32,
|
||||
err := a.query.Select(
|
||||
&advisories,
|
||||
`
|
||||
select
|
||||
q1.*
|
||||
from
|
||||
(
|
||||
select
|
||||
a.id,
|
||||
a.created_at,
|
||||
@ -145,16 +141,14 @@ func (a *Access) GetAllAdvisories(filters *apollopb.AdvisoryFilters, page int32,
|
||||
and ($2 :: timestamp is null or a.published_at < $2 :: timestamp)
|
||||
and ($3 :: timestamp is null or a.published_at > $3 :: timestamp)
|
||||
and (a.published_at is not null or $4 :: bool = true)
|
||||
and ($5 :: text is null or exists (select cve_id from advisory_cves where advisory_id = a.id and cve_id ilike '%' || $5 :: text || '%'))
|
||||
and ($6 :: text is null or a.synopsis ilike '%' || $6 :: text || '%')
|
||||
and ($8 :: text is null or ((a.synopsis ilike '%' || $8 :: text || '%') or (a.topic ilike '%' || $8 :: text || '%') or (a.description ilike '%' || $8 :: text || '%') or (a.solution ilike '%' || $8 :: text || '%') or exists (select cve_id from advisory_cves where advisory_id = a.id and cve_id ilike '%' || $8 :: text || '%') or (a.short_code_code || (case when a.type=1 then 'SA' when a.type=2 then 'BA' else 'EA' end) || '-' || a.year || ':' || a.num ilike '%' || $8 :: text || '%')))
|
||||
and ($9 :: numeric = 0 or a.severity = $9 :: numeric)
|
||||
and ($10 :: numeric = 0 or a.type = $10 :: numeric)
|
||||
group by a.id
|
||||
order by a.published_at desc
|
||||
limit $11 offset $12
|
||||
) as q1
|
||||
where
|
||||
($8 :: text is null or ((q1.synopsis ilike '%' || $8 :: text || '%') or (q1.topic ilike '%' || $8 :: text || '%') or (q1.description ilike '%' || $8 :: text || '%') or (q1.solution ilike '%' || $8 :: text || '%') or exists (select from unnest(q1.cves) e where e ilike '%' || $8 :: text || '%')))
|
||||
and ($5 :: text is null or exists (select from unnest(q1.cves) e where e ilike '%' || $5 :: text || '%'))
|
||||
`,
|
||||
utils.StringValueToNullString(filters.Product),
|
||||
utils.TimestampToNullTime(filters.Before),
|
||||
|
Loading…
Reference in New Issue
Block a user