@@ -16,10 +16,9 @@ class ReferenceOrderQueryParamsClass(BaseModel):
1616
1717 # pylint: disable=unsubscriptable-object
1818 order_by : Json [OrderBy ] = Field (
19- default = OrderBy (field = IDStr ("modified " ), direction = OrderDirection .DESC ),
19+ default = OrderBy (field = IDStr ("modified_at " ), direction = OrderDirection .DESC ),
2020 description = "Order by field (modified_at|name|description) and direction (asc|desc). The default sorting order is ascending." ,
2121 example = '{"field": "name", "direction": "desc"}' ,
22- alias = "order_by" ,
2322 )
2423
2524 @validator ("order_by" , check_fields = False )
@@ -33,7 +32,7 @@ def _validate_order_by_field(cls, v):
3332 msg = f"We do not support ordering by provided field { v .field } "
3433 raise ValueError (msg )
3534 if v .field == "modified_at" :
36- v .field = "modified "
35+ v .field = "modified_column "
3736 return v
3837
3938 class Config :
@@ -42,26 +41,21 @@ class Config:
4241
4342def test_ordering_query_model_class_factory ():
4443 BaseOrderingQueryModel = create_ordering_query_model_classes (
45- ordering_fields = {"modified" , "name" , "description" },
46- default = OrderBy (field = IDStr ("modified" ), direction = OrderDirection .DESC ),
44+ ordering_fields = {"modified_at" , "name" , "description" },
45+ default = OrderBy (field = IDStr ("modified_at" ), direction = OrderDirection .DESC ),
46+ ordering_fields_api_to_column_map = {"modified_at" : "modified_column" },
4747 )
4848
4949 # inherits to add extra post-validator
5050 class OrderQueryParamsModel (BaseOrderingQueryModel ):
51- @validator ("order_by" , pre = True )
52- @classmethod
53- def _validate_order_by_field (cls , v ):
54- # Adds aliases!?
55- if v and v .get ("field" ) == "modified_at" :
56- v ["field" ] = "modified"
57- return v
51+ ...
5852
5953 # normal
6054 data = {"order_by" : {"field" : "modified_at" , "direction" : "asc" }}
6155 model = OrderQueryParamsModel .parse_obj (data )
6256
6357 assert model .order_by
64- assert model .order_by .dict () == {"field" : "modified " , "direction" : "asc" }
58+ assert model .order_by .dict () == {"field" : "modified_column " , "direction" : "asc" }
6559
6660 # test against reference
6761 expected = ReferenceOrderQueryParamsClass .parse_obj (
@@ -131,3 +125,14 @@ def test_ordering_query_model_class__defaults():
131125 error = err_info .value .errors ()[0 ]
132126 assert error ["loc" ] == ("order_by" , "field" )
133127 assert error ["type" ] == "value_error.missing"
128+
129+
130+ def test_ordering_query_model_with_map ():
131+ OrderQueryParamsModel = create_ordering_query_model_classes (
132+ ordering_fields = {"modified" , "name" , "description" },
133+ default = OrderBy (field = IDStr ("modified" ), direction = OrderDirection .DESC ),
134+ ordering_fields_api_to_column_map = {"modified" : "some_db_column_name" },
135+ )
136+
137+ model = OrderQueryParamsModel .parse_obj ({"order_by" : {"field" : "modified" }})
138+ assert model .order_by .field == "some_db_column_name"
0 commit comments