diff --git a/alembic/versions/20230722_1219_2dcc708f88f8_user_auth.py b/alembic/versions/20230722_1219_2dcc708f88f8_user_auth.py index b6c4bed..0f7d2d8 100644 --- a/alembic/versions/20230722_1219_2dcc708f88f8_user_auth.py +++ b/alembic/versions/20230722_1219_2dcc708f88f8_user_auth.py @@ -19,7 +19,7 @@ depends_on = None def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.create_table('user', - sa.Column('uuid', sa.UUID(), nullable=False), + sa.Column('id', sa.UUID(), nullable=False), sa.Column('email', sa.String(), nullable=False), sa.Column('first_name', sa.String(), nullable=False), sa.Column('last_name', sa.String(), nullable=False), diff --git a/app/api/nonsense.py b/app/api/nonsense.py index ebcad4d..2da8313 100644 --- a/app/api/nonsense.py +++ b/app/api/nonsense.py @@ -10,7 +10,7 @@ router = APIRouter(prefix="/v1/nonsense") @router.post("/", status_code=status.HTTP_201_CREATED, response_model=NonsenseResponse) async def create_nonsense(payload: NonsenseSchema, db_session: AsyncSession = Depends(get_db)): - nonsense = Nonsense(**payload.dict()) + nonsense = Nonsense(**payload.model_dump()) await nonsense.save(db_session) return nonsense diff --git a/app/api/stuff.py b/app/api/stuff.py index 11bd8fb..3e572f3 100644 --- a/app/api/stuff.py +++ b/app/api/stuff.py @@ -15,7 +15,7 @@ router = APIRouter(prefix="/v1/stuff") @router.post("/add_many", status_code=status.HTTP_201_CREATED) async def create_multi_stuff(payload: list[StuffSchema], db_session: AsyncSession = Depends(get_db)): try: - stuff_instances = [Stuff(name=stuf.name, description=stuf.description) for stuf in payload] + stuff_instances = [Stuff(**stuff.model_dump()) for stuff in payload] db_session.add_all(stuff_instances) await db_session.commit() except SQLAlchemyError as ex: @@ -28,7 +28,7 @@ async def create_multi_stuff(payload: list[StuffSchema], db_session: AsyncSessio @router.post("", status_code=status.HTTP_201_CREATED, response_model=StuffResponse) async def create_stuff(payload: StuffSchema, db_session: AsyncSession = Depends(get_db)): - stuff = Stuff(name=payload.name, description=payload.description) + stuff = Stuff(**payload.model_dump()) await stuff.save(db_session) return stuff diff --git a/app/models/nonsense.py b/app/models/nonsense.py index 5f4477d..8fcfad8 100644 --- a/app/models/nonsense.py +++ b/app/models/nonsense.py @@ -1,9 +1,10 @@ import uuid from fastapi import HTTPException, status -from sqlalchemy import Column, String, select +from sqlalchemy import String, select from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy.orm import mapped_column, Mapped from app.models.base import Base @@ -11,9 +12,9 @@ from app.models.base import Base class Nonsense(Base): __tablename__ = "nonsense" __table_args__ = ({"schema": "happy_hog"},) - id = Column(UUID(as_uuid=True), unique=True, default=uuid.uuid4, autoincrement=True) - name = Column(String, nullable=False, primary_key=True, unique=True) - description = Column(String, nullable=False) + id: Mapped[uuid:UUID] = mapped_column(UUID(as_uuid=True), unique=True, default=uuid.uuid4, autoincrement=True) + name: Mapped[str] = mapped_column(String, nullable=False, primary_key=True, unique=True) + description: Mapped[str] = mapped_column(String, nullable=False) @classmethod async def find(cls, db_session: AsyncSession, name: str): @@ -33,3 +34,4 @@ class Nonsense(Base): ) else: return instance + diff --git a/app/models/shakespeare.py b/app/models/shakespeare.py index a42dd9e..a228fa6 100644 --- a/app/models/shakespeare.py +++ b/app/models/shakespeare.py @@ -11,7 +11,7 @@ from sqlalchemy import ( select, ) from sqlalchemy.ext.asyncio import AsyncSession -from sqlalchemy.orm import relationship +from sqlalchemy.orm import relationship, mapped_column, Mapped from app.models.base import Base diff --git a/app/models/stuff.py b/app/models/stuff.py index 37dffad..ec27086 100644 --- a/app/models/stuff.py +++ b/app/models/stuff.py @@ -1,9 +1,10 @@ import uuid from fastapi import HTTPException, status -from sqlalchemy import Column, String, select +from sqlalchemy import String, select from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy.orm import mapped_column, Mapped from app.models.base import Base @@ -11,9 +12,9 @@ from app.models.base import Base class Stuff(Base): __tablename__ = "stuff" __table_args__ = ({"schema": "happy_hog"},) - id = Column(UUID(as_uuid=True), unique=True, default=uuid.uuid4, autoincrement=True) - name = Column(String, nullable=False, primary_key=True, unique=True) - description = Column(String, nullable=False) + id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), unique=True, default=uuid.uuid4, autoincrement=True) + name: Mapped[str] = mapped_column(String, nullable=False, primary_key=True, unique=True) + description: Mapped[str] = mapped_column(String, nullable=False) @classmethod async def find(cls, db_session: AsyncSession, name: str): diff --git a/app/models/user.py b/app/models/user.py index 7622244..8917b0c 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -6,6 +6,7 @@ from passlib.context import CryptContext from sqlalchemy import Column, String, LargeBinary, select from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy.orm import mapped_column, Mapped from app import config from app.models.base import Base @@ -15,23 +16,12 @@ global_settings = config.get_settings() pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") -class User(Base): # type: ignore - uuid = Column( - UUID(as_uuid=True), - unique=True, - default=uuid.uuid4, - primary_key=True, - ) - email = Column(String, nullable=False) - first_name = Column(String, nullable=False) - last_name = Column(String, nullable=False) - _password = Column("password", LargeBinary, nullable=False) - - def __init__(self, email: str, first_name: str, last_name: str, password: str = None): - self.email = email - self.first_name = first_name - self.last_name = last_name - self.password = password +class User(Base): + id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), default=uuid.uuid4, primary_key=True) + email: Mapped[str] = mapped_column(String, nullable=False, unique=True) + first_name: Mapped[str] = mapped_column(String, nullable=False) + last_name: Mapped[str] = mapped_column(String, nullable=False) + _password: Mapped[bytes] = mapped_column(LargeBinary, nullable=False) @property def password(self): diff --git a/app/schemas/user.py b/app/schemas/user.py index 55f691c..0d5ed7b 100644 --- a/app/schemas/user.py +++ b/app/schemas/user.py @@ -15,7 +15,7 @@ class UserSchema(BaseModel): class UserResponse(BaseModel): - uuid: UUID = Field(title="User’s id", description="User’s id") + id: UUID = Field(title="User’s id", description="User’s id") email: EmailStr = Field(title="User’s email", description="User’s email") first_name: str = Field(title="User’s first name", description="User’s first name") last_name: str = Field(title="User’s last name", description="User’s last name")