This commit is contained in:
2024-04-23 09:08:56 +00:00
parent ad92682eda
commit 76cf6950ae
16 changed files with 98 additions and 115 deletions

View File

@@ -2,19 +2,22 @@ from collections.abc import AsyncIterable
from typing import Annotated
from fastapi import Depends
from sqlalchemy.ext.asyncio import (AsyncEngine, AsyncSession,
async_sessionmaker, create_async_engine)
from sqlalchemy.ext.asyncio import (
AsyncEngine,
AsyncSession,
async_sessionmaker,
create_async_engine,
)
from api.application.abstractions.transaction import TransactionContextManager
from api.infrastructure.dependencies.stub import Stub
from api.infrastructure.persistence.transaction import \
SqlalchemyTransactionContextManager
from api.infrastructure.persistence.transaction import (
SqlalchemyTransactionContextManager,
)
from api.infrastructure.settings import Settings
def get_transaction_context(
session: Annotated[AsyncSession, Depends(Stub(AsyncSession))]
) -> TransactionContextManager:
def get_transaction_context(session: Annotated[AsyncSession, Depends(Stub(AsyncSession))]) -> TransactionContextManager:
return SqlalchemyTransactionContextManager(session)

View File

@@ -6,8 +6,7 @@ from api.application.abstractions.transaction import TransactionContextManager
from api.application.protocols.password_hasher import PasswordHasher
from api.application.usecase.auth.create_user import CreateUser
from api.application.usecase.company.create_company import CreateCompany
from api.application.usecase.company.get_users_company import \
GetCompaniesByOwnerEmail
from api.application.usecase.company.get_users_company import GetCompaniesByOwnerEmail
from api.domain.company.repository import CompanyRepository
from api.domain.user.repository import UserRepository
from api.infrastructure.dependencies.stub import Stub
@@ -15,9 +14,7 @@ from api.infrastructure.dependencies.stub import Stub
def provide_create_user(
user_repository: Annotated[UserRepository, Depends(Stub(UserRepository))],
transaction: Annotated[
TransactionContextManager, Depends(Stub(TransactionContextManager))
],
transaction: Annotated[TransactionContextManager, Depends(Stub(TransactionContextManager))],
password_hasher: Annotated[PasswordHasher, Depends(Stub(PasswordHasher))],
) -> CreateUser:
return CreateUser(
@@ -29,19 +26,13 @@ def provide_create_user(
def provide_get_companies_by_email(
company_repository: Annotated[CompanyRepository, Depends(Stub(CompanyRepository))],
transaction: Annotated[
TransactionContextManager, Depends(Stub(TransactionContextManager))
],
transaction: Annotated[TransactionContextManager, Depends(Stub(TransactionContextManager))],
) -> GetCompaniesByOwnerEmail:
return GetCompaniesByOwnerEmail(
transaction=transaction, company_repository=company_repository
)
return GetCompaniesByOwnerEmail(transaction=transaction, company_repository=company_repository)
def provide_create_company(
company_repository: Annotated[CompanyRepository, Depends(Stub(CompanyRepository))],
transaction: Annotated[
TransactionContextManager, Depends(Stub(TransactionContextManager))
],
transaction: Annotated[TransactionContextManager, Depends(Stub(TransactionContextManager))],
) -> CreateCompany:
return CreateCompany(transaction=transaction, company_repository=company_repository)

View File

@@ -30,9 +30,7 @@ class DepartmentModel(Base):
)
name: Mapped[str]
address: Mapped[str]
company_id: Mapped[uuid.UUID] = mapped_column(
ForeignKey("company.id", ondelete="CASCADE")
)
company_id: Mapped[uuid.UUID] = mapped_column(ForeignKey("company.id", ondelete="CASCADE"))
class CompanyDepartmentModel(Base):

View File

@@ -1,8 +1,13 @@
from sqlalchemy import text
from sqlalchemy.ext.asyncio import AsyncSession
from api.domain.company.model import (Company, CompanyAddress, CompanyEmail,
CompanyId, CompanyName)
from api.domain.company.model import (
Company,
CompanyAddress,
CompanyEmail,
CompanyId,
CompanyName,
)
from api.domain.company.repository import CompanyRepository
from api.domain.user.model import UserId

View File

@@ -2,8 +2,7 @@ from sqlalchemy import text
from sqlalchemy.ext.asyncio import AsyncSession
from api.domain.user import User, UserRepository
from api.domain.user.model import (UserEmail, UserFirstName, UserId,
UserLastName)
from api.domain.user.model import UserEmail, UserFirstName, UserId, UserLastName
class SqlAlchemyUserRepository(UserRepository):