88from typing import Any , Dict , List , Literal , Optional , Type , Union
99
1010from pydantic import BaseModel , Field , ValidationError
11- from pydantic .class_validators import root_validator , validator
1211
1312from pyneo4j_ogm .logger import logger
1413from pyneo4j_ogm .pydantic_utils import (
2524
2625if IS_PYDANTIC_V2 :
2726 from pydantic import field_validator , model_validator
27+ else :
28+ from pydantic .class_validators import root_validator , validator
2829
2930
3031def _normalize_fields (cls : Type [BaseModel ], values : Any ) -> Any :
@@ -394,7 +395,7 @@ class MultiHopFiltersModel(BaseModel):
394395 """
395396
396397 min_hops_ : Optional [int ] = Field (alias = "$minHops" , ge = 0 , default = None )
397- max_hops_ : Optional [Union [int , Literal ["*" ]]] = Field (alias = "$maxHops" , ge = 1 , default = "*" )
398+ max_hops_ : Optional [Union [int , Literal ["*" ]]] = Field (alias = "$maxHops" , default = "*" )
398399 node_ : MultiHopNodeModel = Field (alias = "$node" )
399400 relationships_ : Optional [List [MultiHopRelationshipOperatorsModel ]] = Field (alias = "$relationships" , default = None )
400401 direction_ : Optional [RelationshipMatchDirection ] = Field (
@@ -404,13 +405,25 @@ class MultiHopFiltersModel(BaseModel):
404405 if IS_PYDANTIC_V2 :
405406 normalize_and_validate_fields = model_validator (mode = "after" )(_normalize_fields )
406407
408+ @field_validator ("max_hops_" )
409+ def validate_max_hops_v2 (cls , v : Any ) -> Any :
410+ if isinstance (v , int ) and v <= 0 :
411+ raise ValueError ("$maxHops must be greater than 0" )
412+ return v
413+
407414 model_config = {
408415 "extra" : "allow" ,
409416 "use_enum_values" : True ,
410417 }
411418 else :
412419 normalize_and_validate_fields = root_validator (allow_reuse = True )(_normalize_fields )
413420
421+ @validator ("max_hops_" )
422+ def validate_max_hops_v1 (cls , v : Any ) -> Any :
423+ if isinstance (v , int ) and v <= 0 :
424+ raise ValueError ("$maxHops must be greater than 0" )
425+ return v
426+
414427 class Config :
415428 """
416429 Pydantic configuration
0 commit comments