Now call me crazy but this was working a second ago and now its not.
I have a few classes and one function(in S_Sorting
) here
class ScanSort(str, Enum):
ASSET_NAME = "assetName"
CREATED_AT = "createdAt"
...
class BaseSorting(BaseModel):
sort_order: Annotated[SortOrder, Query(...)] = SortOrder.ASCENDING
...
class S_Sorting(BaseSorting):
sort_by: Annotated[ScanSort, Query(...)] = ScanSort.CREATED_AT
...
@staticmethod
def scan_table_mapping(passed_param: str) -> str:
mapping = {
...,
"createdAt": "scans.created_at",
..
}
return mapping.get(passed_param, "scans.created_at")
that my function relies on for sorting my data(in a postgres db).
def build_query(
self,
...,
sorting: S_Sorting,
sort_by_mapped = S_Sorting.scan_table_mapping(sorting.sort_by)
direction = asc if sorting.sort_order == SortOrder.ASCENDING else desc
query = query.order_by(direction(text(sort_by_mapped)))
So if there is no sort
parameter, then it default sorts according to S_Sorting
, works fine.
Now when I pass in sort=createdAt
it should sorting that mapped value.
However, this is the error I get:
{
"detail": [
{
"type": "enum",
"loc": [
"query",
"sort_by"
],
"msg": "Input should be '..., 'createdAt' or 'updatedAt'",
"input": " createdAt",
"ctx": {
"expected": "'..., 'createdAt' or 'updatedAt'"
}
}
]
}
I’m literally giving it what it expects. What am I doing wrong with classes as dependencies?