mirror of
https://github.com/iflytek/skillhub.git
synced 2026-08-27 11:14:59 +00:00
fix(ISSUE-64): guard malformed compliance search rows
Signed-off-by: dongmucat <1127093059@qq.com>
This commit is contained in:
parent
1905125e27
commit
4f193a5eba
2 changed files with 6 additions and 2 deletions
|
|
@ -134,7 +134,8 @@ public class PostgresFullTextQueryService implements SearchQueryService {
|
|||
if (hasComplianceStandard) {
|
||||
sql.append("AND EXISTS (");
|
||||
sql.append("SELECT 1 FROM jsonb_array_elements(");
|
||||
sql.append("COALESCE(latest.parsed_metadata_json -> 'frontmatter' -> 'x-astron-compliance', '[]'::jsonb)");
|
||||
sql.append("CASE WHEN jsonb_typeof(latest.parsed_metadata_json -> 'frontmatter' -> 'x-astron-compliance') = 'array' ");
|
||||
sql.append("THEN latest.parsed_metadata_json -> 'frontmatter' -> 'x-astron-compliance' ELSE '[]'::jsonb END");
|
||||
sql.append(") AS compliance_item ");
|
||||
sql.append("WHERE LOWER(BTRIM(compliance_item ->> 'standard')) = :complianceStandard");
|
||||
sql.append(") ");
|
||||
|
|
|
|||
|
|
@ -326,7 +326,10 @@ class PostgresFullTextQueryServiceTest {
|
|||
ArgumentCaptor<String> sqlCaptor = ArgumentCaptor.forClass(String.class);
|
||||
verify(entityManager, org.mockito.Mockito.times(2)).createNativeQuery(sqlCaptor.capture());
|
||||
assertThat(sqlCaptor.getAllValues().getFirst()).contains(
|
||||
"jsonb_array_elements(COALESCE(latest.parsed_metadata_json -> 'frontmatter' -> 'x-astron-compliance', '[]'::jsonb))"
|
||||
"jsonb_array_elements(CASE WHEN jsonb_typeof(latest.parsed_metadata_json -> 'frontmatter' -> 'x-astron-compliance') = 'array'"
|
||||
);
|
||||
assertThat(sqlCaptor.getAllValues().getFirst()).contains(
|
||||
"THEN latest.parsed_metadata_json -> 'frontmatter' -> 'x-astron-compliance' ELSE '[]'::jsonb END)"
|
||||
);
|
||||
assertThat(sqlCaptor.getAllValues().getFirst()).contains("LOWER(BTRIM(compliance_item ->> 'standard')) = :complianceStandard");
|
||||
verify(nativeQuery).setParameter("complianceStandard", "gdpr");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue