rb-commons 0.4.7__py3-none-any.whl → 0.4.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.
- rb_commons/orm/managers.py +7 -3
- {rb_commons-0.4.7.dist-info → rb_commons-0.4.9.dist-info}/METADATA +1 -1
- {rb_commons-0.4.7.dist-info → rb_commons-0.4.9.dist-info}/RECORD +5 -5
- {rb_commons-0.4.7.dist-info → rb_commons-0.4.9.dist-info}/WHEEL +0 -0
- {rb_commons-0.4.7.dist-info → rb_commons-0.4.9.dist-info}/top_level.txt +0 -0
rb_commons/orm/managers.py
CHANGED
@@ -33,6 +33,7 @@ class BaseManager(Generic[ModelType]):
|
|
33
33
|
self.data = None
|
34
34
|
self.filters = []
|
35
35
|
self._filtered = False
|
36
|
+
self._limit = None
|
36
37
|
|
37
38
|
async def _smart_commit(self, instance: Optional[ModelType] = None) -> Optional[ModelType]:
|
38
39
|
if not self.session.in_transaction():
|
@@ -176,6 +177,10 @@ class BaseManager(Generic[ModelType]):
|
|
176
177
|
async def all(self, load_all_relations: bool = False) -> List[ModelType]:
|
177
178
|
self._ensure_filtered()
|
178
179
|
stmt = select(self.model).filter(and_(*self.filters))
|
180
|
+
|
181
|
+
if self._limit:
|
182
|
+
stmt = stmt.limit(self._limit)
|
183
|
+
|
179
184
|
return await self._execute_query_and_unique_data(stmt, load_all_relations)
|
180
185
|
|
181
186
|
async def paginate(self, limit: int = 10, offset: int = 0, load_all_relations: bool = False) -> List[ModelType]:
|
@@ -387,11 +392,10 @@ class BaseManager(Generic[ModelType]):
|
|
387
392
|
if not self.session.in_transaction():
|
388
393
|
await self.session.commit()
|
389
394
|
|
390
|
-
@with_transaction_error_handling
|
391
395
|
def has_relation(self, relation_name: str) -> 'BaseManager[ModelType]':
|
392
396
|
"""
|
393
397
|
Check if a relationship exists between models using an EXISTS subquery.
|
394
|
-
|
398
|
+
|
395
399
|
:param relation_name Name of the relationship to check. Must be a valid relationship
|
396
400
|
defined in the model.
|
397
401
|
|
@@ -399,7 +403,7 @@ class BaseManager(Generic[ModelType]):
|
|
399
403
|
|
400
404
|
:raise DatabaseException: If there's an error constructing the subquery.
|
401
405
|
:raise InternalException: If there's an unexpected error in relationship handling.
|
402
|
-
|
406
|
+
|
403
407
|
Notes:
|
404
408
|
- The relationship must be properly defined in the SQLAlchemy model
|
405
409
|
- Uses a non-correlated EXISTS subquery for better performance
|
@@ -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=
|
14
|
+
rb_commons/orm/managers.py,sha256=Z20gyT7JASAvWG7eXlFP9wvG_KroqFnPfcQabH9NVag,16021
|
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=HL50s5RHW1nk2U3-YTESg0EDGkJDu1vN4QchcfK-L5g,988
|
@@ -19,7 +19,7 @@ rb_commons/schemes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
19
19
|
rb_commons/schemes/jwt.py,sha256=F66JJDhholuOPPzlKeoC6f1TL4gXg4oRUrV5yheNpyo,1675
|
20
20
|
rb_commons/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
21
|
rb_commons/utils/media.py,sha256=KNY_9SdRa3Rp7d3B1tZaXkhmzVa65RcS62BYwZP1bVM,332
|
22
|
-
rb_commons-0.4.
|
23
|
-
rb_commons-0.4.
|
24
|
-
rb_commons-0.4.
|
25
|
-
rb_commons-0.4.
|
22
|
+
rb_commons-0.4.9.dist-info/METADATA,sha256=xMkxBD2ktROi4NXDnhUwfr89w5zxn4wBiM6SaBV1spM,6570
|
23
|
+
rb_commons-0.4.9.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
24
|
+
rb_commons-0.4.9.dist-info/top_level.txt,sha256=HPx_WAYo3_fbg1WCeGHsz3wPGio1ucbnrlm2lmqlJog,11
|
25
|
+
rb_commons-0.4.9.dist-info/RECORD,,
|
File without changes
|
File without changes
|