From 33476e86e541de46caced729381850e9195890d4 Mon Sep 17 00:00:00 2001 From: slorello89 Date: Tue, 19 Nov 2024 12:40:42 -0500 Subject: [PATCH] enhancing primary key check to be compatible with sqlmodel --- aredis_om/model/model.py | 6 +++--- tests/test_json_model.py | 11 +++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/aredis_om/model/model.py b/aredis_om/model/model.py index d283b29e..b1110444 100644 --- a/aredis_om/model/model.py +++ b/aredis_om/model/model.py @@ -1524,7 +1524,7 @@ def validate_primary_key(cls): else: field_info = field.field_info - if getattr(field_info, "primary_key", None): + if getattr(field_info, "primary_key", None) is True: primary_keys += 1 if primary_keys == 0: raise RedisModelError("You must define a primary key for the model") @@ -1805,7 +1805,7 @@ def schema_for_fields(cls): else: field_info = field.field_info - if getattr(field_info, "primary_key", None): + if getattr(field_info, "primary_key", None) is True: if issubclass(_type, str): redisearch_field = ( f"{name} TAG SEPARATOR {SINGLE_VALUE_TAG_FIELD_SEPARATOR}" @@ -2000,7 +2000,7 @@ def schema_for_fields(cls): field_info = field.field_info else: field_info = field - if getattr(field_info, "primary_key", None): + if getattr(field_info, "primary_key", None) is True: if issubclass(_type, str): redisearch_field = f"$.{name} AS {name} TAG SEPARATOR {SINGLE_VALUE_TAG_FIELD_SEPARATOR}" else: diff --git a/tests/test_json_model.py b/tests/test_json_model.py index ea275552..f7f7b07a 100644 --- a/tests/test_json_model.py +++ b/tests/test_json_model.py @@ -1157,3 +1157,14 @@ class TestLiterals(JsonModel): await item.save() rematerialized = await TestLiterals.find(TestLiterals.flavor == "pumpkin").first() assert rematerialized.pk == item.pk + + +@py_test_mark_asyncio +async def test_two_false_pks(): + from pydantic_core import PydanticUndefined as Undefined + + class SomeModel(JsonModel): + field1: str = Field(index=True, primary_key=Undefined) + field2: str = Field(index=True, primary_key=Undefined) + + SomeModel(field1="foo", field2="bar")