diff --git a/backend/alembic/versions/58e3caaa6269_users_add_role_at_signup_and_onboarding_.py b/backend/alembic/versions/58e3caaa6269_users_add_role_at_signup_and_onboarding_.py new file mode 100644 index 00000000..5958e708 --- /dev/null +++ b/backend/alembic/versions/58e3caaa6269_users_add_role_at_signup_and_onboarding_.py @@ -0,0 +1,28 @@ +"""users add role_at_signup and onboarding_step_completed + +Revision ID: 58e3caaa6269 +Revises: 5bb055a1593e +Create Date: 2026-05-06 07:25:16.780761 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '58e3caaa6269' +down_revision: Union[str, None] = '5bb055a1593e' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + op.add_column("users", sa.Column("role_at_signup", sa.String(50), nullable=True)) + op.add_column("users", sa.Column("onboarding_step_completed", sa.Integer(), nullable=True)) + + +def downgrade() -> None: + op.drop_column("users", "onboarding_step_completed") + op.drop_column("users", "role_at_signup") diff --git a/backend/app/models/user.py b/backend/app/models/user.py index 064e57ba..ab25c8f0 100644 --- a/backend/app/models/user.py +++ b/backend/app/models/user.py @@ -1,7 +1,7 @@ import uuid from datetime import datetime, timezone from typing import Optional, TYPE_CHECKING -from sqlalchemy import String, DateTime, ForeignKey, Boolean, CheckConstraint, Text +from sqlalchemy import String, DateTime, ForeignKey, Boolean, CheckConstraint, Text, Integer from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.dialects.postgresql import UUID from app.core.database import Base @@ -76,6 +76,8 @@ class User(Base): # Onboarding onboarding_dismissed: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False, server_default="false") + role_at_signup: Mapped[Optional[str]] = mapped_column(String(50), nullable=True) + onboarding_step_completed: Mapped[Optional[int]] = mapped_column(Integer, nullable=True) # Branding (solo pros without a team) logo_data: Mapped[Optional[str]] = mapped_column(Text, nullable=True)