diff --git a/app/models/base.py b/app/models/base.py index 02e07ff..34e1fc3 100644 --- a/app/models/base.py +++ b/app/models/base.py @@ -16,6 +16,9 @@ class User(Base): id: Mapped[int] = mapped_column(Integer, primary_key=True, index=True) email: Mapped[str] = mapped_column(String(255), unique=True, index=True, nullable=False) + username: Mapped[Optional[str]] = mapped_column(String(50), unique=True, index=True, nullable=True) + full_name: Mapped[Optional[str]] = mapped_column(String(255), nullable=True) + phone_number: Mapped[Optional[str]] = mapped_column(String(20), nullable=True) hashed_password: Mapped[str] = mapped_column(String(255), nullable=False) role: Mapped[str] = mapped_column(String(50), default="developer", nullable=False) is_active: Mapped[bool] = mapped_column(Boolean, default=True, nullable=False) diff --git a/app/schemas/auth.py b/app/schemas/auth.py index b4a2012..e88cae1 100644 --- a/app/schemas/auth.py +++ b/app/schemas/auth.py @@ -28,6 +28,9 @@ class UserBase(BaseModel): class UserCreate(UserBase): """User creation schema.""" password: str = Field(..., min_length=8, examples=["strong_password_123"]) + username: Optional[str] = Field(None, examples=["janesmith"]) + full_name: Optional[str] = Field(None, examples=["Jane Smith"]) + phone_number: Optional[str] = Field(None, examples=["+1234567890"]) @@ -40,6 +43,9 @@ class UserLogin(UserBase): class UserResponse(UserBase): """User response schema.""" id: int + username: Optional[str] + full_name: Optional[str] + phone_number: Optional[str] is_active: bool is_superuser: bool created_at: datetime diff --git a/app/services/user.py b/app/services/user.py index 671c6cd..3f92313 100644 --- a/app/services/user.py +++ b/app/services/user.py @@ -27,6 +27,9 @@ async def create_user(db: AsyncSession, user_in: UserCreate) -> User: hashed_password = get_password_hash(user_in.password) db_user = User( email=user_in.email, + username=user_in.username, + full_name=user_in.full_name, + phone_number=user_in.phone_number, hashed_password=hashed_password, ) db.add(db_user)