fix: tag matching (#585)

Co-authored-by: Mindy Long <mindy@letta.com>
This commit is contained in:
mlong93
2025-01-10 11:42:43 -08:00
committed by GitHub
parent 60a0fd0a14
commit 0e7fe5dfe5

View File

@@ -100,9 +100,13 @@ class SqlalchemyBase(CommonSqlalchemyMetaMixins, Base):
if match_all_tags:
# Match ALL tags - use subqueries
for tag in tags:
subquery = select(cls.tags.property.mapper.class_.agent_id).where(cls.tags.property.mapper.class_.tag == tag)
query = query.filter(cls.id.in_(subquery))
subquery = (
select(cls.tags.property.mapper.class_.agent_id)
.where(cls.tags.property.mapper.class_.tag.in_(tags))
.group_by(cls.tags.property.mapper.class_.agent_id)
.having(func.count() == len(tags))
)
query = query.filter(cls.id.in_(subquery))
else:
# Match ANY tag - use join and filter
query = (