diff --git a/apps/api/migrations/versions/adb944cc8bec_add_users_details_and_profile.py b/apps/api/migrations/versions/adb944cc8bec_add_users_details_and_profile.py new file mode 100644 index 00000000..269e6c29 --- /dev/null +++ b/apps/api/migrations/versions/adb944cc8bec_add_users_details_and_profile.py @@ -0,0 +1,33 @@ +"""Add Users details and Profile + +Revision ID: adb944cc8bec +Revises: 4a88b680263c +Create Date: 2025-03-29 16:31:38.797525 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa # noqa: F401 +import sqlmodel # noqa: F401 + + +# revision identifiers, used by Alembic. +revision: str = 'adb944cc8bec' +down_revision: Union[str, None] = '4a88b680263c' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('user', sa.Column('details', sa.JSON(), nullable=True)) + op.add_column('user', sa.Column('profile', sa.JSON(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('user', 'profile') + op.drop_column('user', 'details') + # ### end Alembic commands ### diff --git a/apps/api/src/db/users.py b/apps/api/src/db/users.py index d7412e30..9985c177 100644 --- a/apps/api/src/db/users.py +++ b/apps/api/src/db/users.py @@ -1,6 +1,7 @@ from typing import Optional from pydantic import BaseModel, EmailStr from sqlmodel import Field, SQLModel +from sqlalchemy import JSON, Column from src.db.roles import RoleRead @@ -12,7 +13,8 @@ class UserBase(SQLModel): email: EmailStr avatar_image: Optional[str] = "" bio: Optional[str] = "" - + details: Optional[dict] = Field(default={}, sa_column=Column(JSON)) + profile: Optional[dict] = Field(default={}, sa_column=Column(JSON)) class UserCreate(UserBase): first_name: str = "" @@ -27,6 +29,8 @@ class UserUpdate(UserBase): email: str avatar_image: Optional[str] = "" bio: Optional[str] = "" + details: Optional[dict] = {} + profile: Optional[dict] = {} class UserUpdatePassword(SQLModel):