From 714dc8c4801dd2dae12435739740e45bed8743cf Mon Sep 17 00:00:00 2001 From: MerCry Date: Tue, 3 Mar 2026 10:58:26 +0800 Subject: [PATCH] fix: correct metadata scope filter SQL query for PostgreSQL [AC-IDSMETA-16] --- .../services/metadata_field_definition_service.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/ai-service/app/services/metadata_field_definition_service.py b/ai-service/app/services/metadata_field_definition_service.py index 134799c..577cf20 100644 --- a/ai-service/app/services/metadata_field_definition_service.py +++ b/ai-service/app/services/metadata_field_definition_service.py @@ -9,7 +9,7 @@ import uuid from datetime import datetime from typing import Any -from sqlalchemy import select, func, cast, text +from sqlalchemy import select, func, cast, text, any_ from sqlalchemy.dialects.postgresql import JSONB from sqlalchemy.ext.asyncio import AsyncSession from sqlmodel import col @@ -63,10 +63,7 @@ class MetadataFieldDefinitionService: if scope: stmt = stmt.where( - func.jsonb_contains( - cast(MetadataFieldDefinition.scope, JSONB), - func.cast(f'["{scope}"]', JSONB) - ) + cast(MetadataFieldDefinition.scope, JSONB).op('?')(scope) ) stmt = stmt.order_by(col(MetadataFieldDefinition.created_at).desc()) @@ -279,10 +276,7 @@ class MetadataFieldDefinitionService: if scope: stmt = stmt.where( - func.jsonb_contains( - cast(MetadataFieldDefinition.scope, JSONB), - func.cast(f'["{scope}"]', JSONB) - ) + cast(MetadataFieldDefinition.scope, JSONB).op('?')(scope) ) stmt = stmt.order_by(col(MetadataFieldDefinition.created_at).desc())