feat: add details and profile fields to User model with JSON support

This commit is contained in:
swve 2025-03-29 16:35:07 +01:00
parent af17deff30
commit 6ff53915a8
2 changed files with 38 additions and 1 deletions

View file

@ -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 ###

View file

@ -1,6 +1,7 @@
from typing import Optional from typing import Optional
from pydantic import BaseModel, EmailStr from pydantic import BaseModel, EmailStr
from sqlmodel import Field, SQLModel from sqlmodel import Field, SQLModel
from sqlalchemy import JSON, Column
from src.db.roles import RoleRead from src.db.roles import RoleRead
@ -12,7 +13,8 @@ class UserBase(SQLModel):
email: EmailStr email: EmailStr
avatar_image: Optional[str] = "" avatar_image: Optional[str] = ""
bio: 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): class UserCreate(UserBase):
first_name: str = "" first_name: str = ""
@ -27,6 +29,8 @@ class UserUpdate(UserBase):
email: str email: str
avatar_image: Optional[str] = "" avatar_image: Optional[str] = ""
bio: Optional[str] = "" bio: Optional[str] = ""
details: Optional[dict] = {}
profile: Optional[dict] = {}
class UserUpdatePassword(SQLModel): class UserUpdatePassword(SQLModel):