186 lines
6.1 KiB
Python
186 lines
6.1 KiB
Python
from functools import lru_cache
|
|
|
|
from fastapi import Depends
|
|
|
|
from src.application.abstractions import IUnitOfWork
|
|
from src.application.commands import (
|
|
AdminLoginCommand,
|
|
AdminLogoutCommand,
|
|
AdminJwtRefreshCommand,
|
|
GetAdminMeCommand,
|
|
CreateOrganizationCommand,
|
|
CreateOrganizationWalletsCommand,
|
|
GetOrganizationMnemonicCommand,
|
|
GetOrganizationSecretKeysCommand,
|
|
GetOrganizationCommand,
|
|
ListOrganizationWalletsCommand,
|
|
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_admin_logout_command(
|
|
logger: ILogger = Depends(get_logger),
|
|
) -> AdminLogoutCommand:
|
|
return AdminLogoutCommand(logger)
|
|
|
|
|
|
def get_admin_jwt_refresh_command(
|
|
uow: IUnitOfWork = Depends(get_unit_of_work),
|
|
jwt_service: IJwtService = Depends(get_jwt_service),
|
|
logger: ILogger = Depends(get_logger),
|
|
) -> AdminJwtRefreshCommand:
|
|
return AdminJwtRefreshCommand(uow, jwt_service, 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_list_organization_wallets_command(
|
|
uow: IUnitOfWork = Depends(get_unit_of_work),
|
|
logger: ILogger = Depends(get_logger),
|
|
) -> ListOrganizationWalletsCommand:
|
|
return ListOrganizationWalletsCommand(uow, logger)
|
|
|
|
|
|
def get_get_organization_mnemonic_command(
|
|
uow: IUnitOfWork = Depends(get_unit_of_work),
|
|
logger: ILogger = Depends(get_logger),
|
|
) -> GetOrganizationMnemonicCommand:
|
|
return GetOrganizationMnemonicCommand(uow, logger)
|
|
|
|
|
|
def get_get_organization_secret_keys_command(
|
|
uow: IUnitOfWork = Depends(get_unit_of_work),
|
|
logger: ILogger = Depends(get_logger),
|
|
) -> GetOrganizationSecretKeysCommand:
|
|
return GetOrganizationSecretKeysCommand(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)
|