init
This commit is contained in:
6
src/presentation/dependencies/__init__.py
Normal file
6
src/presentation/dependencies/__init__.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from src.presentation.dependencies.commands import (
|
||||
get_admin_login_command,
|
||||
get_admin_logout_command,
|
||||
get_admin_jwt_refresh_command,
|
||||
get_admin_me_command,
|
||||
)
|
||||
12
src/presentation/dependencies/cache.py
Normal file
12
src/presentation/dependencies/cache.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from fastapi import Depends, Request
|
||||
from redis.asyncio.client import Redis
|
||||
from src.application.contracts import ICache
|
||||
from src.infrastructure.cache import KeydbCache
|
||||
|
||||
|
||||
def get_redis(request: Request) -> Redis:
|
||||
return request.app.state.redis
|
||||
|
||||
|
||||
def get_cache(redis_client: Redis = Depends(get_redis)) -> ICache:
|
||||
return KeydbCache(redis_client)
|
||||
145
src/presentation/dependencies/commands.py
Normal file
145
src/presentation/dependencies/commands.py
Normal file
@@ -0,0 +1,145 @@
|
||||
from functools import lru_cache
|
||||
|
||||
from fastapi import Depends
|
||||
|
||||
from src.application.abstractions import IUnitOfWork
|
||||
from src.application.commands import (
|
||||
AdminLoginCommand,
|
||||
GetAdminMeCommand,
|
||||
CreateOrganizationCommand,
|
||||
CreateOrganizationWalletsCommand,
|
||||
GetOrganizationCommand,
|
||||
GetPurchaseRequestCommand,
|
||||
ListOrganizationsCommand,
|
||||
GetOrganizationDocumentCommand,
|
||||
ListOrganizationDocumentsCommand,
|
||||
ListPurchaseRequestsCommand,
|
||||
SetPurchaseRequestQuoteCommand,
|
||||
UpdateOrganizationCommand,
|
||||
UpdatePurchaseRequestStatusCommand,
|
||||
UploadOrganizationDocumentCommand,
|
||||
)
|
||||
from src.application.contracts import IHashService, IJwtService, ILogger
|
||||
from src.infrastructure.config import settings
|
||||
from src.infrastructure.storage.s3_documents_service import S3DocumentsService
|
||||
from src.presentation.dependencies.logger import get_logger
|
||||
from src.presentation.dependencies.security import get_hash_service, get_jwt_service
|
||||
from src.presentation.dependencies.unit_of_work import get_unit_of_work
|
||||
|
||||
|
||||
@lru_cache(maxsize=1)
|
||||
def _s3_documents_service() -> S3DocumentsService:
|
||||
return S3DocumentsService(
|
||||
bucket=settings.LEGAL_DOCS_S3_BUCKET,
|
||||
region=settings.LEGAL_DOCS_S3_REGION,
|
||||
access_key_id=settings.LEGAL_DOCS_S3_ACCESS_KEY_ID or None,
|
||||
secret_access_key=settings.LEGAL_DOCS_S3_SECRET_ACCESS_KEY or None,
|
||||
endpoint_url=settings.LEGAL_DOCS_S3_ENDPOINT_URL or None,
|
||||
key_prefix=settings.LEGAL_DOCS_S3_KEY_PREFIX,
|
||||
presigned_ttl_seconds=settings.LEGAL_DOCS_S3_PRESIGNED_TTL_SECONDS,
|
||||
)
|
||||
|
||||
|
||||
def get_s3_documents_service() -> S3DocumentsService:
|
||||
return _s3_documents_service()
|
||||
|
||||
|
||||
def get_admin_login_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
hash_service: IHashService = Depends(get_hash_service),
|
||||
jwt_service: IJwtService = Depends(get_jwt_service),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> AdminLoginCommand:
|
||||
return AdminLoginCommand(uow, hash_service, jwt_service, logger)
|
||||
|
||||
|
||||
def get_admin_me_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> GetAdminMeCommand:
|
||||
return GetAdminMeCommand(uow, logger)
|
||||
|
||||
|
||||
def get_create_organization_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
hash_service: IHashService = Depends(get_hash_service),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> CreateOrganizationCommand:
|
||||
return CreateOrganizationCommand(uow, hash_service, logger)
|
||||
|
||||
|
||||
def get_create_organization_wallets_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> CreateOrganizationWalletsCommand:
|
||||
return CreateOrganizationWalletsCommand(uow, logger)
|
||||
|
||||
|
||||
def get_upload_organization_document_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> UploadOrganizationDocumentCommand:
|
||||
return UploadOrganizationDocumentCommand(uow, get_s3_documents_service(), logger)
|
||||
|
||||
|
||||
def get_list_organizations_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> ListOrganizationsCommand:
|
||||
return ListOrganizationsCommand(uow, logger)
|
||||
|
||||
|
||||
def get_get_organization_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> GetOrganizationCommand:
|
||||
return GetOrganizationCommand(uow, logger)
|
||||
|
||||
|
||||
def get_update_organization_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> UpdateOrganizationCommand:
|
||||
return UpdateOrganizationCommand(uow, logger)
|
||||
|
||||
|
||||
def get_list_organization_documents_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> ListOrganizationDocumentsCommand:
|
||||
return ListOrganizationDocumentsCommand(uow, logger)
|
||||
|
||||
|
||||
def get_get_organization_document_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> GetOrganizationDocumentCommand:
|
||||
return GetOrganizationDocumentCommand(uow, logger)
|
||||
|
||||
|
||||
def get_list_purchase_requests_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> ListPurchaseRequestsCommand:
|
||||
return ListPurchaseRequestsCommand(uow, logger)
|
||||
|
||||
|
||||
def get_get_purchase_request_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> GetPurchaseRequestCommand:
|
||||
return GetPurchaseRequestCommand(uow, logger)
|
||||
|
||||
|
||||
def get_update_purchase_request_status_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> UpdatePurchaseRequestStatusCommand:
|
||||
return UpdatePurchaseRequestStatusCommand(uow, logger)
|
||||
|
||||
|
||||
def get_set_purchase_request_quote_command(
|
||||
uow: IUnitOfWork = Depends(get_unit_of_work),
|
||||
logger: ILogger = Depends(get_logger),
|
||||
) -> SetPurchaseRequestQuoteCommand:
|
||||
return SetPurchaseRequestQuoteCommand(uow, logger)
|
||||
7
src/presentation/dependencies/logger.py
Normal file
7
src/presentation/dependencies/logger.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from functools import lru_cache
|
||||
from src.application.contracts import ILogger
|
||||
from src.infrastructure.logger import logger
|
||||
|
||||
@lru_cache
|
||||
def get_logger() -> ILogger:
|
||||
return logger
|
||||
8
src/presentation/dependencies/queue_messanger.py
Normal file
8
src/presentation/dependencies/queue_messanger.py
Normal file
@@ -0,0 +1,8 @@
|
||||
from functools import lru_cache
|
||||
from src.application.contracts import IQueueMessanger
|
||||
from src.infrastructure.messanger import RabbitClient
|
||||
|
||||
|
||||
@lru_cache(maxsize=1)
|
||||
def get_rabbit() -> IQueueMessanger:
|
||||
return RabbitClient()
|
||||
25
src/presentation/dependencies/security.py
Normal file
25
src/presentation/dependencies/security.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from functools import lru_cache
|
||||
from fastapi import Depends
|
||||
from src.application.contracts import IHashService, IJwtService, ILogger
|
||||
from src.infrastructure.security import HashService, JwtService
|
||||
from src.infrastructure.vault import JwtKeyStore
|
||||
from src.presentation.dependencies.logger import get_logger
|
||||
|
||||
|
||||
@lru_cache(maxsize=1)
|
||||
def _hash_service(logger: ILogger) -> IHashService:
|
||||
return HashService(logger=logger)
|
||||
|
||||
|
||||
def get_hash_service(logger: ILogger = Depends(get_logger)) -> IHashService:
|
||||
return _hash_service(logger)
|
||||
|
||||
|
||||
@lru_cache(maxsize=1)
|
||||
def _jwt_service(logger: ILogger) -> IJwtService:
|
||||
key_store = JwtKeyStore.get_instance()
|
||||
return JwtService(logger=logger, key_store=key_store)
|
||||
|
||||
|
||||
def get_jwt_service(logger: ILogger = Depends(get_logger)) -> IJwtService:
|
||||
return _jwt_service(logger)
|
||||
10
src/presentation/dependencies/unit_of_work.py
Normal file
10
src/presentation/dependencies/unit_of_work.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from fastapi import Depends
|
||||
from src.application.abstractions import IUnitOfWork
|
||||
from src.application.contracts import ILogger
|
||||
from src.infrastructure.database import UnitOfWork
|
||||
from src.infrastructure.database.context import async_session_maker
|
||||
from src.infrastructure.logger import get_logger
|
||||
|
||||
|
||||
def get_unit_of_work(logger: ILogger = Depends(get_logger)) -> IUnitOfWork:
|
||||
return UnitOfWork(session_factory=async_session_maker, logger=logger)
|
||||
Reference in New Issue
Block a user