config di lifespan
This commit is contained in:
20
api/infrastructure/persistence/db_setings.py
Normal file
20
api/infrastructure/persistence/db_setings.py
Normal 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,
|
||||
)
|
5
api/infrastructure/persistence/models/base.py
Normal file
5
api/infrastructure/persistence/models/base.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from sqlalchemy.orm import DeclarativeBase
|
||||
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
...
|
18
api/infrastructure/persistence/models/user.py
Normal file
18
api/infrastructure/persistence/models/user.py
Normal 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]
|
@@ -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
|
||||
|
Reference in New Issue
Block a user