fastapi-sqlalchemy-toolkit 0.7.12__tar.gz → 0.7.13__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 (59) hide show
  1. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/PKG-INFO +1 -1
  2. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/fastapi_sqlalchemy_toolkit/model_manager.py +13 -0
  3. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/pyproject.toml +1 -1
  4. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/.flake8 +0 -0
  5. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/.github/workflows/docker-test.yml +0 -0
  6. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/.github/workflows/python-publish.yml +0 -0
  7. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/.gitignore +0 -0
  8. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/.pylintrc +0 -0
  9. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/AUTHORS +0 -0
  10. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/LICENSE +0 -0
  11. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/Makefile +0 -0
  12. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/README.md +0 -0
  13. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/benefits.md +0 -0
  14. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/db_validation.md +0 -0
  15. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/extension.md +0 -0
  16. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/filtering.md +0 -0
  17. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/index.md +0 -0
  18. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/ru/benefits.md +0 -0
  19. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/ru/db_validation.md +0 -0
  20. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/ru/extension.md +0 -0
  21. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/ru/filtering.md +0 -0
  22. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/ru/index.md +0 -0
  23. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/ru/sorting.md +0 -0
  24. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/ru/transactions.md +0 -0
  25. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/ru/usage.md +0 -0
  26. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/ru/utils.md +0 -0
  27. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/sorting.md +0 -0
  28. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/transactions.md +0 -0
  29. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/usage.md +0 -0
  30. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/docs/utils.md +0 -0
  31. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/.env +0 -0
  32. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/__init__.py +0 -0
  33. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/api/__init__.py +0 -0
  34. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/api/api.py +0 -0
  35. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/api/deps.py +0 -0
  36. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/api/endpoints/__init__.py +0 -0
  37. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/api/endpoints/child.py +0 -0
  38. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/config.py +0 -0
  39. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/db.py +0 -0
  40. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/main.py +0 -0
  41. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/managers.py +0 -0
  42. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/models.py +0 -0
  43. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/examples/app/schemas.py +0 -0
  44. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/fastapi_sqlalchemy_toolkit/__init__.py +0 -0
  45. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/fastapi_sqlalchemy_toolkit/filters.py +0 -0
  46. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/fastapi_sqlalchemy_toolkit/ordering.py +0 -0
  47. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/fastapi_sqlalchemy_toolkit/utils.py +0 -0
  48. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/mkdocs.yml +0 -0
  49. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/requirements/base.txt +0 -0
  50. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/requirements/docs.txt +0 -0
  51. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/requirements/lint.txt +0 -0
  52. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/requirements/test.txt +0 -0
  53. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/tests/Dockerfile +0 -0
  54. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/tests/__init__.py +0 -0
  55. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/tests/conftest.py +0 -0
  56. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/tests/db.py +0 -0
  57. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/tests/docker-compose.yml +0 -0
  58. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/tests/models.py +0 -0
  59. {fastapi_sqlalchemy_toolkit-0.7.12 → fastapi_sqlalchemy_toolkit-0.7.13}/tests/test_public_methods.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi_sqlalchemy_toolkit
3
- Version: 0.7.12
3
+ Version: 0.7.13
4
4
  Summary: FastAPI SQLAlchemy Toolkit
5
5
  Project-URL: Homepage, https://github.com/e-kondr01/fastapi-sqlalchemy-toolkit
6
6
  Author-email: Egor Kondrashov <e.kondr01@gmail.com>
@@ -216,6 +216,8 @@ class ModelManager(Generic[ModelT, CreateSchemaT, UpdateSchemaT]):
216
216
  order_by: InstrumentedAttribute | UnaryExpression | None = None,
217
217
  where: Any | None = None,
218
218
  base_stmt: Select | None = None,
219
+ *,
220
+ unique: bool = False,
219
221
  **simple_filters: Any,
220
222
  ) -> ModelT | Row | None:
221
223
  """
@@ -234,6 +236,9 @@ class ModelManager(Generic[ModelT, CreateSchemaT, UpdateSchemaT]):
234
236
  Примечание: фильтрация и сортировка по связанным моделям скорее всего
235
237
  не будут работать вместе с этим параметром.
236
238
 
239
+ :param unique: определяет необходимость вызова метода .unique()
240
+ у результата SQLAlchemy
241
+
237
242
  :param simple_filters: параметры для фильтрации по точному соответствию,
238
243
  аналогично методу .filter_by() SQLAlchemy
239
244
 
@@ -242,6 +247,8 @@ class ModelManager(Generic[ModelT, CreateSchemaT, UpdateSchemaT]):
242
247
  stmt = self.assemble_stmt(base_stmt, order_by, options, where, **simple_filters)
243
248
 
244
249
  result = await session.execute(stmt)
250
+ if unique:
251
+ result = result.unique()
245
252
  if base_stmt is None:
246
253
  if order_by is not None:
247
254
  return result.scalars().first()
@@ -255,6 +262,8 @@ class ModelManager(Generic[ModelT, CreateSchemaT, UpdateSchemaT]):
255
262
  order_by: InstrumentedAttribute | UnaryExpression | None = None,
256
263
  where: Any | None = None,
257
264
  base_stmt: Select | None = None,
265
+ *,
266
+ unique: bool = False,
258
267
  **simple_filters: Any,
259
268
  ) -> ModelT | Row:
260
269
  """
@@ -271,6 +280,9 @@ class ModelManager(Generic[ModelT, CreateSchemaT, UpdateSchemaT]):
271
280
  :param base_stmt: объект Select для SQL запроса. Если передан, то метод вернёт
272
281
  экземпляр Row, а не ModelT.
273
282
 
283
+ :param unique: определяет необходимость вызова метода .unique()
284
+ у результата SQLAlchemy
285
+
274
286
  :param simple_filters: параметры для фильтрации по точному соответствию,
275
287
  аналогично методу .filter_by() SQLAlchemy
276
288
 
@@ -285,6 +297,7 @@ class ModelManager(Generic[ModelT, CreateSchemaT, UpdateSchemaT]):
285
297
  order_by=order_by,
286
298
  where=where,
287
299
  base_stmt=base_stmt,
300
+ unique=unique,
288
301
  **simple_filters,
289
302
  )
290
303
  if not db_obj:
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fastapi_sqlalchemy_toolkit"
7
- version = "0.7.12"
7
+ version = "0.7.13"
8
8
  authors = [
9
9
  { name="Egor Kondrashov", email="e.kondr01@gmail.com" },
10
10
  ]