fastapi-factory-utilities 0.2.6__tar.gz → 0.2.8__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 fastapi-factory-utilities might be problematic. Click here for more details.
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/PKG-INFO +1 -1
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/pyproject.toml +1 -1
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/odm_plugin/documents.py +1 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/odm_plugin/repositories.py +46 -1
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/LICENSE +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/README.md +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/__main__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/api/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/api/tags.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/api/v1/sys/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/api/v1/sys/health.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/api/v1/sys/readiness.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/app/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/app/application.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/app/builder.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/app/config.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/app/enums.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/app/exceptions.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/app/fastapi_builder.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/app/plugin_manager/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/app/plugin_manager/exceptions.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/app/plugin_manager/plugin_manager.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/exceptions.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/example/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/httpx_plugin/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/odm_plugin/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/odm_plugin/builder.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/odm_plugin/configs.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/odm_plugin/depends.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/odm_plugin/exceptions.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/opentelemetry_plugin/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/opentelemetry_plugin/builder.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/opentelemetry_plugin/configs.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/opentelemetry_plugin/exceptions.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/plugins/opentelemetry_plugin/helpers.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/protocols.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/services/status/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/services/status/enums.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/services/status/exceptions.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/services/status/health_calculator_strategies.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/services/status/readiness_calculator_strategies.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/services/status/services.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/services/status/types.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/utils/configs.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/utils/importlib.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/utils/log.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/utils/status.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/utils/uvicorn.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/core/utils/yaml_reader.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/__main__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/api/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/api/books/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/api/books/responses.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/api/books/routes.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/app.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/application.yaml +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/entities/books/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/entities/books/entities.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/entities/books/enums.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/entities/books/types.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/models/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/models/books/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/models/books/document.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/models/books/repository.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/services/books/__init__.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/example/services/books/services.py +0 -0
- {fastapi_factory_utilities-0.2.6 → fastapi_factory_utilities-0.2.8}/src/fastapi_factory_utilities/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: fastapi_factory_utilities
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.8
|
|
4
4
|
Summary: Consolidate libraries and utilities to create microservices in Python with FastAPI, Beanie, Httpx, AioPika and OpenTelemetry.
|
|
5
5
|
License: MIT
|
|
6
6
|
Keywords: python,fastapi,beanie,httpx,opentelemetry,microservices
|
|
@@ -3,7 +3,7 @@ name = "fastapi_factory_utilities"
|
|
|
3
3
|
homepage = "https://github.com/miragecentury/fastapi_factory_utilities"
|
|
4
4
|
repository = "https://github.com/miragecentury/fastapi_factory_utilities"
|
|
5
5
|
keywords = ["python", "fastapi", "beanie", "httpx", "opentelemetry", "microservices"]
|
|
6
|
-
version = "0.2.
|
|
6
|
+
version = "0.2.8"
|
|
7
7
|
description = "Consolidate libraries and utilities to create microservices in Python with FastAPI, Beanie, Httpx, AioPika and OpenTelemetry."
|
|
8
8
|
authors = ["miragecentury <victorien.vanroye@gmail.com>"]
|
|
9
9
|
maintainers = ["miragecentury <victorien.vanroye@gmail.com>"]
|
|
@@ -17,6 +17,7 @@ class BaseDocument(Document):
|
|
|
17
17
|
default_factory=uuid4, description="The document ID."
|
|
18
18
|
)
|
|
19
19
|
|
|
20
|
+
revision_id: UUID | None = Field(default=None, exclude=False)
|
|
20
21
|
created_at: Annotated[datetime.datetime, Indexed(index_type=DESCENDING)] = Field( # pyright: ignore
|
|
21
22
|
default_factory=lambda: datetime.datetime.now(tz=datetime.UTC), description="Creation timestamp."
|
|
22
23
|
)
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"""Provides the abstract classes for the repositories."""
|
|
2
2
|
|
|
3
|
+
import datetime
|
|
3
4
|
from abc import ABC
|
|
4
5
|
from collections.abc import AsyncGenerator, Callable
|
|
5
6
|
from contextlib import asynccontextmanager
|
|
6
7
|
from typing import Any, Generic, TypeVar, get_args
|
|
7
8
|
from uuid import UUID
|
|
9
|
+
from venv import create
|
|
8
10
|
|
|
9
11
|
from motor.motor_asyncio import AsyncIOMotorClientSession, AsyncIOMotorDatabase
|
|
10
12
|
from pydantic import BaseModel
|
|
@@ -77,8 +79,13 @@ class AbstractRepository(ABC, Generic[DocumentGenericType, EntityGenericType]):
|
|
|
77
79
|
UnableToCreateEntityDueToDuplicateKeyError: If the entity cannot be created due to a duplicate key error.
|
|
78
80
|
OperationError: If the operation fails.
|
|
79
81
|
"""
|
|
82
|
+
insert_time: datetime.datetime = datetime.datetime.now(tz=datetime.timezone.utc)
|
|
80
83
|
try:
|
|
81
|
-
|
|
84
|
+
entity_dump: dict[str, Any] = entity.model_dump()
|
|
85
|
+
entity_dump["created_at"] = insert_time
|
|
86
|
+
entity_dump["updated_at"] = insert_time
|
|
87
|
+
document: DocumentGenericType = self._document_type(**entity_dump)
|
|
88
|
+
|
|
82
89
|
except ValueError as error:
|
|
83
90
|
raise ValueError(f"Failed to create document from entity: {error}") from error
|
|
84
91
|
|
|
@@ -96,6 +103,44 @@ class AbstractRepository(ABC, Generic[DocumentGenericType, EntityGenericType]):
|
|
|
96
103
|
|
|
97
104
|
return entity_created
|
|
98
105
|
|
|
106
|
+
@managed_session()
|
|
107
|
+
async def update(
|
|
108
|
+
self, entity: EntityGenericType, session: AsyncIOMotorClientSession | None = None
|
|
109
|
+
) -> EntityGenericType:
|
|
110
|
+
"""Update the entity in the database.
|
|
111
|
+
|
|
112
|
+
Args:
|
|
113
|
+
entity (EntityGenericType): The entity to update.
|
|
114
|
+
session (AsyncIOMotorClientSession | None): The session to use. Defaults to None. (managed by decorator)
|
|
115
|
+
|
|
116
|
+
Returns:
|
|
117
|
+
EntityGenericType: The updated entity.
|
|
118
|
+
|
|
119
|
+
Raises:
|
|
120
|
+
ValueError: If the entity cannot be created from the document.
|
|
121
|
+
OperationError: If the operation fails.
|
|
122
|
+
"""
|
|
123
|
+
update_time: datetime.datetime = datetime.datetime.now(tz=datetime.timezone.utc)
|
|
124
|
+
try:
|
|
125
|
+
entity_dump: dict[str, Any] = entity.model_dump()
|
|
126
|
+
entity_dump["updated_at"] = update_time
|
|
127
|
+
document: DocumentGenericType = self._document_type(**entity_dump)
|
|
128
|
+
|
|
129
|
+
except ValueError as error:
|
|
130
|
+
raise ValueError(f"Failed to create document from entity: {error}") from error
|
|
131
|
+
|
|
132
|
+
try:
|
|
133
|
+
document_updated: DocumentGenericType = await document.save(session=session)
|
|
134
|
+
except PyMongoError as error:
|
|
135
|
+
raise OperationError(f"Failed to update document: {error}") from error
|
|
136
|
+
|
|
137
|
+
try:
|
|
138
|
+
entity_updated: EntityGenericType = self._entity_type(**document_updated.model_dump())
|
|
139
|
+
except ValueError as error:
|
|
140
|
+
raise ValueError(f"Failed to create entity from document: {error}") from error
|
|
141
|
+
|
|
142
|
+
return entity_updated
|
|
143
|
+
|
|
99
144
|
@managed_session()
|
|
100
145
|
async def get_one_by_id(
|
|
101
146
|
self,
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|