python-general-be-lib 0.5.3__tar.gz → 0.5.4__tar.gz

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.
Files changed (36) hide show
  1. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/PKG-INFO +1 -1
  2. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/repository/crud_repository.py +13 -4
  3. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/repository/handler/statement_manager.py +5 -4
  4. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/pyproject.toml +1 -1
  5. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/python_general_be_lib.egg-info/PKG-INFO +1 -1
  6. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/setup.py +1 -1
  7. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/LICENSE +0 -0
  8. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/README.md +0 -0
  9. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/__init__.py +0 -0
  10. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/exception/__init__.py +0 -0
  11. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/exception/access_exceptions.py +0 -0
  12. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/exception/crud_exceptions.py +0 -0
  13. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/exception/exception_interface.py +0 -0
  14. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/base/__init__.py +0 -0
  15. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/base/base_model.py +0 -0
  16. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/base/declarative_base.py +0 -0
  17. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/metadata/__init__.py +0 -0
  18. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/metadata/crud_metadata.py +0 -0
  19. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/metadata/geom_metadata.py +0 -0
  20. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/repository/__init__.py +0 -0
  21. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/repository/geometry_repository.py +0 -0
  22. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/repository/handler/__init__.py +0 -0
  23. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/repository/handler/base_handler.py +0 -0
  24. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/repository/handler/ilike_handler.py +0 -0
  25. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/repository/handler/interval_handler.py +0 -0
  26. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/repository/handler/json_handler.py +0 -0
  27. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/repository/handler/json_ilike_handler.py +0 -0
  28. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/repository/many_to_many_repository.py +0 -0
  29. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/interface/repository/view_repository.py +0 -0
  30. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/logger.py +0 -0
  31. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/general/paginator_dto.py +0 -0
  32. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/python_general_be_lib.egg-info/SOURCES.txt +0 -0
  33. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/python_general_be_lib.egg-info/dependency_links.txt +0 -0
  34. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/python_general_be_lib.egg-info/requires.txt +0 -0
  35. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/python_general_be_lib.egg-info/top_level.txt +0 -0
  36. {python_general_be_lib-0.5.3 → python_general_be_lib-0.5.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-general-be-lib
3
- Version: 0.5.3
3
+ Version: 0.5.4
4
4
  Summary: General purpose backend library — SQLAlchemy CRUD/Geometry repositories, FastAPI exceptions, Pydantic base models, logger utilities.
5
5
  Author-email: Andrea Di Placido <a.diplacido@arpes.it>, "Arpes S.r.l." <it.admin@arpes.it>
6
6
  License: MIT
@@ -217,12 +217,13 @@ class CrudRepository[Entity: Base | Type[Base]]:
217
217
  else:
218
218
  pass
219
219
 
220
- def find(self, session: Session = None, where: dict[str, Any] = None, columns: list[str] = None, exclude_columns: list[str] = None, limit: int = 0, parsing_model: Type[BaseModel] = None, **kwhere) -> list[Entity]:
220
+ def find(self, session: Session = None, where: dict[str, Any] = None, columns: list[str] = None, exclude_columns: list[str] = None, limit: int = 0, parsing_model: Type[BaseModel] = None, order_by: str = None,
221
+ asc: bool = None, **kwhere) -> list[Entity]:
221
222
  """Cerca i record che corrispondono ai criteri specificati.
222
223
 
223
224
  I filtri possono essere passati come dizionario ``where`` o come
224
225
  keyword arguments. Supporta caricamento parziale delle colonne,
225
- limit e modelli di parsing alternativi.
226
+ limit, ordinamento e modelli di parsing alternativi.
226
227
 
227
228
  Args:
228
229
  session (Session, optional): Sessione esterna. Se ``None``, ne viene
@@ -234,6 +235,10 @@ class CrudRepository[Entity: Base | Type[Base]]:
234
235
  limit (int): Numero massimo di risultati. 0 = nessun limite. Default: 0.
235
236
  parsing_model (Type[BaseModel], optional): Modello Pydantic alternativo
236
237
  per la serializzazione del risultato.
238
+ order_by (str, optional): Nome della colonna per l'ordinamento dei risultati.
239
+ Se ``None``, non viene applicato nessun ordinamento.
240
+ asc (bool, optional): Direzione dell'ordinamento. ``True`` per ASC,
241
+ ``False`` per DESC. Se ``None``, l'ordinamento di default è DESC.
237
242
  **kwhere: Filtri aggiuntivi come keyword arguments.
238
243
 
239
244
  Returns:
@@ -243,17 +248,21 @@ class CrudRepository[Entity: Base | Type[Base]]:
243
248
  Example:
244
249
  >>> repo.find(active=True, limit=10)
245
250
  >>> repo.find(where={"role": ["admin", "editor"]})
251
+ >>> repo.find(active=True, order_by="name", asc=True)
246
252
  """
253
+
247
254
  keep_open = False if session is None else True
248
255
  session = self.open_session if session is None else session
249
- entities = self._find(session=session, where=where, columns=columns, exclude_columns=exclude_columns, limit=limit, **kwhere)
256
+ entities = self._find(session=session, where=where, columns=columns, exclude_columns=exclude_columns, limit=limit, order_by=order_by, asc=asc, **kwhere)
250
257
  return self._return(session=session, entities=entities, keep_open=keep_open, commit=False, parsing_model=parsing_model)
251
258
 
252
- def _find(self, session: Session, where: dict[str, Any] = None, columns: list[str] = None, exclude_columns: list[str] = None, limit: int = 0, **kwhere):
259
+ def _find(self, session: Session, where: dict[str, Any] = None, columns: list[str] = None, exclude_columns: list[str] = None, limit: int = 0, order_by: str = None,
260
+ asc: bool = None, **kwhere):
253
261
  if where is None:
254
262
  where = kwhere if kwhere else {}
255
263
  stmt = self._select(entity=self.entity, columns=columns, exclude_columns=exclude_columns)
256
264
  stmt = self.stmt_manager.prepare_statement(stmt=stmt, **where)
265
+ stmt = self.stmt_manager.order_by_condition(stmt=stmt, order_by=order_by, asc=asc)
257
266
  stmt = self.stmt_manager.limit_offset_condition(stmt=stmt, limit=limit)
258
267
  return self.execute(session, stmt)
259
268
 
@@ -74,10 +74,11 @@ class StatementManager:
74
74
  Raises:
75
75
  HasNoAttributeException: Se la colonna ``order_by`` non esiste sull'entità.
76
76
  """
77
- try:
78
- stmt = stmt.order_by(self._base_handler.columns[order_by].asc()) if asc else stmt.order_by(self._base_handler.columns[order_by].desc())
79
- except KeyError:
80
- raise HasNoAttributeException(order_by)
77
+ if order_by:
78
+ try:
79
+ stmt = stmt.order_by(self._base_handler.columns[order_by].asc()) if asc else stmt.order_by(self._base_handler.columns[order_by].desc())
80
+ except KeyError:
81
+ raise HasNoAttributeException(order_by)
81
82
  return stmt
82
83
 
83
84
  def limit_offset_condition(self, stmt: Select, limit: int, page: int = None):
@@ -4,7 +4,7 @@ build-backend = "setuptools.backends.legacy:build"
4
4
 
5
5
  [project]
6
6
  name = "python-general-be-lib"
7
- version = "0.5.3"
7
+ version = "0.5.4"
8
8
  description = "General purpose backend library — SQLAlchemy CRUD/Geometry repositories, FastAPI exceptions, Pydantic base models, logger utilities."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-general-be-lib
3
- Version: 0.5.3
3
+ Version: 0.5.4
4
4
  Summary: General purpose backend library — SQLAlchemy CRUD/Geometry repositories, FastAPI exceptions, Pydantic base models, logger utilities.
5
5
  Author-email: Andrea Di Placido <a.diplacido@arpes.it>, "Arpes S.r.l." <it.admin@arpes.it>
6
6
  License: MIT
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="python-general-be-lib",
5
- version="0.5.3",
5
+ version="0.5.4",
6
6
  packages=find_packages(include=["general*"]),
7
7
  python_requires=">=3.12",
8
8
  install_requires=[