Merge pull request #67 from mstg/errata-keyword-fix-name

Apollo: Keyword search now does pagination correctly
This commit is contained in:
resf-prow[bot] 2022-11-07 13:30:45 +00:00 committed by GitHub
commit 850c4b93bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -104,10 +104,6 @@ func (a *Access) GetAllAdvisories(filters *apollopb.AdvisoryFilters, page int32,
err := a.query.Select( err := a.query.Select(
&advisories, &advisories,
` `
select
q1.*
from
(
select select
a.id, a.id,
a.created_at, 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 ($2 :: timestamp is null or a.published_at < $2 :: timestamp)
and ($3 :: timestamp is null or a.published_at > $3 :: timestamp) and ($3 :: timestamp is null or a.published_at > $3 :: timestamp)
and (a.published_at is not null or $4 :: bool = true) 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 ($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 ($9 :: numeric = 0 or a.severity = $9 :: numeric)
and ($10 :: numeric = 0 or a.type = $10 :: numeric) and ($10 :: numeric = 0 or a.type = $10 :: numeric)
group by a.id group by a.id
order by a.published_at desc order by a.published_at desc
limit $11 offset $12 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.StringValueToNullString(filters.Product),
utils.TimestampToNullTime(filters.Before), utils.TimestampToNullTime(filters.Before),