From 4d997a375ecafa99faba56a5fb9641d2eba4aa62 Mon Sep 17 00:00:00 2001 From: Conrad Date: Thu, 25 Apr 2024 18:19:26 +0200 Subject: [PATCH] feat: added order_by method --- creyPY/fastapi/order_by.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 creyPY/fastapi/order_by.py diff --git a/creyPY/fastapi/order_by.py b/creyPY/fastapi/order_by.py new file mode 100644 index 0000000..7c85dff --- /dev/null +++ b/creyPY/fastapi/order_by.py @@ -0,0 +1,14 @@ +from typing import Callable, Optional + +from sqlalchemy import asc, desc +from sqlalchemy.sql.selectable import Select + + +def order_by(order_by: Optional[str] = None) -> Callable[[Select], Select]: + def _order_by(query: Select) -> Select: + if order_by: + direction = desc if order_by.startswith("-") else asc + query = query.order_by(direction(order_by.lstrip("-"))) + return query + + return _order_by