rb-commons 0.5.7__py3-none-any.whl → 0.5.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import uuid
4
4
  from typing import TypeVar, Type, Generic, Optional, List, Dict, Literal, Union, Sequence, Any, Iterable
5
- from sqlalchemy import select, delete, update, and_, func, desc, inspect, or_
5
+ from sqlalchemy import select, delete, update, and_, func, desc, inspect, or_, asc
6
6
  from sqlalchemy.exc import IntegrityError, SQLAlchemyError, NoResultFound
7
7
  from sqlalchemy.ext.asyncio import AsyncSession
8
8
  from sqlalchemy.orm import declarative_base, InstrumentedAttribute, selectinload, RelationshipProperty, Load
@@ -403,8 +403,10 @@ class BaseManager(Generic[ModelType]):
403
403
  raise NotFoundException("Object does not exist", 404, "0001")
404
404
  return instance
405
405
 
406
- async def is_exists(self, **lookups):
407
- stmt = select(self.model).filter_by(**lookups)
406
+ async def is_exists(self):
407
+ self._ensure_filtered()
408
+
409
+ stmt = select(self.model).filter(and_(*self.filters))
408
410
  result = await self.session.execute(stmt)
409
411
  return result.scalar_one_or_none() is not None
410
412
 
@@ -420,6 +422,25 @@ class BaseManager(Generic[ModelType]):
420
422
  self._filtered = True
421
423
  return self
422
424
 
425
+ def sort_by(self, tokens: Sequence[str]) -> "BaseManager[ModelType]":
426
+ """
427
+ Dynamically apply ORDER BY clauses based on a list of "field" or "-field" tokens.
428
+ """
429
+ model = self.model
430
+
431
+ for tok in tokens:
432
+ if not tok:
433
+ continue
434
+ direction = desc if tok.startswith("-") else asc
435
+ name = tok.lstrip("-")
436
+ col = getattr(model, name, None)
437
+ if col is None:
438
+ raise InternalException(f"Cannot sort by unknown field '{name}'")
439
+
440
+ self._order_by.append(direction(col))
441
+
442
+ return self
443
+
423
444
  def model_to_dict(self, instance: ModelType, exclude: set[str] | None = None):
424
445
  exclude = exclude or set()
425
446
  return {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rb-commons
3
- Version: 0.5.7
3
+ Version: 0.5.9
4
4
  Summary: Commons of project and simplified orm based on sqlalchemy.
5
5
  Home-page: https://github.com/RoboSell-organization/rb-commons
6
6
  Author: Abdulvoris
@@ -11,7 +11,7 @@ rb_commons/http/consul.py,sha256=Ioq72VD1jGwoC96set7n2SgxN40olzI-myA2lwKkYi4,186
11
11
  rb_commons/http/exceptions.py,sha256=EGRMr1cRgiJ9Q2tkfANbf0c6-zzXf1CD6J3cmCaT_FA,1885
12
12
  rb_commons/orm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  rb_commons/orm/exceptions.py,sha256=1aMctiEwrPjyehoXVX1l6ML5ZOhmDkmBISzlTD5ey1Y,509
14
- rb_commons/orm/managers.py,sha256=7gvLhAclX1xE6DO78QP8LXpUE9K0bHGI7om7xRvuJSE,16492
14
+ rb_commons/orm/managers.py,sha256=VMu3v-JzSVZ9pN2d4ZcAF6qZyqmBeXZ62kiHUY73v20,17163
15
15
  rb_commons/orm/services.py,sha256=71eRcJ4TxZvzNz-hLXo12X4U7PGK54ZfbLAb27AjZi8,1589
16
16
  rb_commons/permissions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  rb_commons/permissions/role_permissions.py,sha256=e5Sw5zUcepXOtsrOlFEgp0Kr5lqHF7sVGPRvx0gDw68,1019
@@ -20,7 +20,7 @@ rb_commons/schemes/jwt.py,sha256=F66JJDhholuOPPzlKeoC6f1TL4gXg4oRUrV5yheNpyo,167
20
20
  rb_commons/schemes/pagination.py,sha256=8VZW1wZGJIPR9jEBUgppZUoB4uqP8ORudHkMwvEJSxg,1866
21
21
  rb_commons/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  rb_commons/utils/media.py,sha256=KNY_9SdRa3Rp7d3B1tZaXkhmzVa65RcS62BYwZP1bVM,332
23
- rb_commons-0.5.7.dist-info/METADATA,sha256=IxwmmWr4y7KJ-afB818IgOXPDwAIxlJleyuR4aaYjhA,6570
24
- rb_commons-0.5.7.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
25
- rb_commons-0.5.7.dist-info/top_level.txt,sha256=HPx_WAYo3_fbg1WCeGHsz3wPGio1ucbnrlm2lmqlJog,11
26
- rb_commons-0.5.7.dist-info/RECORD,,
23
+ rb_commons-0.5.9.dist-info/METADATA,sha256=d-yIjeyxJiiYucx5M2Qh3Y_dXSo8wXXeizA3glwLcLo,6570
24
+ rb_commons-0.5.9.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
25
+ rb_commons-0.5.9.dist-info/top_level.txt,sha256=HPx_WAYo3_fbg1WCeGHsz3wPGio1ucbnrlm2lmqlJog,11
26
+ rb_commons-0.5.9.dist-info/RECORD,,