config di lifespan

This commit is contained in:
2024-03-31 21:07:59 +03:00
parent 327ab86d1f
commit c809f14fdc
12 changed files with 115 additions and 9 deletions

View File

@@ -0,0 +1,20 @@
from dataclasses import dataclass
@dataclass(frozen=True)
class DBSettings:
pg_user: str
pg_pass: str
pg_host: str
pg_port: int
pg_db: str
@property
def db_url(self) -> str:
return "postgresql+asyncpg://{}:{}@{}:{}/{}".format(
self.pg_user,
self.pg_pass,
self.pg_host,
self.pg_port,
self.pg_db,
)

View File

@@ -0,0 +1,5 @@
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
...

View File

@@ -0,0 +1,18 @@
import uuid
from sqlalchemy import UUID
from sqlalchemy.orm import Mapped, mapped_column
from api.infrastructure.persistence.models.base import Base
class UserModel(Base):
__tablename__ = "user"
id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True),
primary_key=True,
)
name: Mapped[str]
email: Mapped[str] = mapped_column(unique=True)
hashed_password: Mapped[str]

View File

@@ -1,6 +1,8 @@
from sqlalchemy import insert
from sqlalchemy.ext.asyncio import AsyncSession
from api.domain.user import User, UserRepository
from api.infrastructure.persistence.models.user import UserModel
class SqlAlchemyUserRepository(UserRepository):
@@ -8,7 +10,13 @@ class SqlAlchemyUserRepository(UserRepository):
self.session = session
async def create_user(self, user: User) -> None:
pass
stmt = insert(UserModel).values(
id=user.id,
name=user.name,
email=user.email,
hashed_password=user.password,
)
await self.session.execute(stmt)
async def get_user(self, filter: dict) -> User | None:
pass