jararaca 0.2.22__tar.gz → 0.2.24__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.
Potentially problematic release.
This version of jararaca might be problematic. Click here for more details.
- {jararaca-0.2.22 → jararaca-0.2.24}/PKG-INFO +1 -1
- {jararaca-0.2.22 → jararaca-0.2.24}/pyproject.toml +1 -1
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/persistence/base.py +4 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/persistence/sort_filter.py +7 -4
- {jararaca-0.2.22 → jararaca-0.2.24}/LICENSE +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/README.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Architecture/Message Bus/Decorators.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Architecture/Message Bus/Interceptors.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Architecture/Observability/Decorators.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Architecture/Observability/Interceptors.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Architecture/Presentation/Decorators.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Architecture/RPC/RestClients/Decorators.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Architecture/RPC/RestClients/Middlewared.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Architecture/Schedule/Decorators.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Architecture/Websocket/Decorators.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Architecture/Websocket/Interceptors.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Concept/Adapters.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Concept/Hexagonal Architecture.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/Concept/Ports.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.jpeg +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/assets/_f04774c9-7e05-4da4-8b17-8be23f6a1475.webp +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/assets/tracing_example.png +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/docs/index.md +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/__main__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/cli.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/common/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/core/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/core/providers.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/core/uow.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/di.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/files/entity.py.mako +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/lifecycle.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/messagebus/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/messagebus/decorators.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/messagebus/interceptors/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/messagebus/interceptors/publisher_interceptor.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/messagebus/publisher.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/messagebus/types.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/messagebus/worker.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/microservice.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/observability/decorators.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/observability/interceptor.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/observability/providers/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/observability/providers/otel.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/persistence/exports.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/persistence/interceptors/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/persistence/session.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/decorators.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/hooks.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/http_microservice.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/server.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/websocket/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/websocket/base_types.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/websocket/context.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/websocket/decorators.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/websocket/redis.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/websocket/types.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/websocket/websocket_interceptor.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/py.typed +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/rpc/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/rpc/http/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/rpc/http/backends/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/rpc/http/backends/httpx.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/rpc/http/backends/otel.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/rpc/http/decorators.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/rpc/http/httpx.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/scheduler/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/scheduler/decorators.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/scheduler/scheduler.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/tools/app_config/__init__.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/tools/app_config/decorators.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/tools/app_config/interceptor.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/tools/metadata.py +0 -0
- {jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/tools/typescript/interface_parser.py +0 -0
|
@@ -23,6 +23,8 @@ from sqlalchemy import DateTime, Result, Select, delete, func, select, update
|
|
|
23
23
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
24
24
|
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
|
|
25
25
|
|
|
26
|
+
from jararaca.persistence.sort_filter import FilterModel, SortModel
|
|
27
|
+
|
|
26
28
|
IDENTIFIABLE_SCHEMA_T = TypeVar("IDENTIFIABLE_SCHEMA_T")
|
|
27
29
|
logger = logging.getLogger(__name__)
|
|
28
30
|
|
|
@@ -205,6 +207,8 @@ class CRUDOperations(Generic[IDENTIFIABLE_T]):
|
|
|
205
207
|
class PaginatedFilter(BaseModel):
|
|
206
208
|
page: Annotated[int, Field(gt=-1)] = 1
|
|
207
209
|
page_size: int = 10
|
|
210
|
+
sort_models: list[SortModel] = []
|
|
211
|
+
filter_model: list[FilterModel] = []
|
|
208
212
|
|
|
209
213
|
|
|
210
214
|
class QueryInjector(Protocol):
|
|
@@ -94,6 +94,12 @@ class SortFilterRunner:
|
|
|
94
94
|
case _:
|
|
95
95
|
raise ValueError(f"Unsupported string operator: {filter.operator}")
|
|
96
96
|
elif field_type in [date, datetime]:
|
|
97
|
+
match filter.operator:
|
|
98
|
+
case "isEmpty":
|
|
99
|
+
return query.filter(field == None) # noqa
|
|
100
|
+
case "isNotEmpty":
|
|
101
|
+
return query.filter(field != None) # noqa
|
|
102
|
+
|
|
97
103
|
__value = (
|
|
98
104
|
filter.value[0] if isinstance(filter.value, list) else filter.value
|
|
99
105
|
)
|
|
@@ -114,10 +120,7 @@ class SortFilterRunner:
|
|
|
114
120
|
return query.filter(field < value)
|
|
115
121
|
case "onOrBefore":
|
|
116
122
|
return query.filter(field <= value)
|
|
117
|
-
|
|
118
|
-
return query.filter(field == None) # noqa
|
|
119
|
-
case "isNotEmpty":
|
|
120
|
-
return query.filter(field != None) # noqa
|
|
123
|
+
|
|
121
124
|
case _:
|
|
122
125
|
raise ValueError(
|
|
123
126
|
f"Unsupported data/datetime operator: {filter.operator}"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/messagebus/interceptors/publisher_interceptor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/persistence/interceptors/aiosqa_interceptor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jararaca-0.2.22 → jararaca-0.2.24}/src/jararaca/presentation/websocket/websocket_interceptor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|