fastapi-toolsets 3.0.2__tar.gz → 3.0.3__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 (38) hide show
  1. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/PKG-INFO +1 -1
  2. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/pyproject.toml +1 -1
  3. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/__init__.py +1 -1
  4. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/crud/search.py +27 -1
  5. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/LICENSE +0 -0
  6. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/README.md +0 -0
  7. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/_imports.py +0 -0
  8. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/cli/__init__.py +0 -0
  9. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/cli/app.py +0 -0
  10. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/cli/commands/__init__.py +0 -0
  11. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/cli/commands/fixtures.py +0 -0
  12. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/cli/config.py +0 -0
  13. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/cli/pyproject.py +0 -0
  14. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/cli/utils.py +0 -0
  15. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/crud/__init__.py +0 -0
  16. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/crud/factory.py +0 -0
  17. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/db.py +0 -0
  18. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/dependencies.py +0 -0
  19. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/exceptions/__init__.py +0 -0
  20. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/exceptions/exceptions.py +0 -0
  21. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/exceptions/handler.py +0 -0
  22. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/fixtures/__init__.py +0 -0
  23. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/fixtures/enum.py +0 -0
  24. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/fixtures/registry.py +0 -0
  25. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/fixtures/utils.py +0 -0
  26. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/logger.py +0 -0
  27. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/metrics/__init__.py +0 -0
  28. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/metrics/handler.py +0 -0
  29. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/metrics/registry.py +0 -0
  30. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/models/__init__.py +0 -0
  31. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/models/columns.py +0 -0
  32. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/models/watched.py +0 -0
  33. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/py.typed +0 -0
  34. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/pytest/__init__.py +0 -0
  35. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/pytest/plugin.py +0 -0
  36. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/pytest/utils.py +0 -0
  37. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/schemas.py +0 -0
  38. {fastapi_toolsets-3.0.2 → fastapi_toolsets-3.0.3}/src/fastapi_toolsets/types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-toolsets
3
- Version: 3.0.2
3
+ Version: 3.0.3
4
4
  Summary: Production-ready utilities for FastAPI applications
5
5
  Keywords: fastapi,sqlalchemy,postgresql
6
6
  Author: d3vyce
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fastapi-toolsets"
3
- version = "3.0.2"
3
+ version = "3.0.3"
4
4
  description = "Production-ready utilities for FastAPI applications"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -21,4 +21,4 @@ Example usage:
21
21
  return Response(data={"user": user.username}, message="Success")
22
22
  """
23
23
 
24
- __version__ = "3.0.2"
24
+ __version__ = "3.0.3"
@@ -265,7 +265,15 @@ async def build_facets(
265
265
  else:
266
266
  q = q.order_by(column)
267
267
  result = await session.execute(q)
268
- values = [row[0] for row in result.all() if row[0] is not None]
268
+ col_type = column.property.columns[0].type
269
+ enum_class = getattr(col_type, "enum_class", None)
270
+ values = [
271
+ row[0].name
272
+ if (enum_class is not None and isinstance(row[0], enum_class))
273
+ else row[0]
274
+ for row in result.all()
275
+ if row[0] is not None
276
+ ]
269
277
  return key, values
270
278
 
271
279
  pairs = await asyncio.gather(
@@ -347,6 +355,24 @@ def build_filter_by(
347
355
  filters.append(column.overlap(value))
348
356
  else:
349
357
  filters.append(column.any(value))
358
+ elif isinstance(col_type, Enum):
359
+ enum_class = col_type.enum_class
360
+ if enum_class is not None:
361
+
362
+ def _coerce_enum(v: Any) -> Any:
363
+ if isinstance(v, enum_class):
364
+ return v
365
+ return enum_class[v] # lookup by name: "PENDING", "RED"
366
+
367
+ if isinstance(value, list):
368
+ filters.append(column.in_([_coerce_enum(v) for v in value]))
369
+ else:
370
+ filters.append(column == _coerce_enum(value))
371
+ else: # pragma: no cover
372
+ if isinstance(value, list):
373
+ filters.append(column.in_(value))
374
+ else:
375
+ filters.append(column == value)
350
376
  elif isinstance(col_type, _EQUALITY_TYPES):
351
377
  if isinstance(value, list):
352
378
  filters.append(column.in_(value))