feat(onboarding): add users.role_at_signup and onboarding_step_completed
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -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")
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
from typing import Optional, TYPE_CHECKING
|
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.orm import Mapped, mapped_column, relationship
|
||||||
from sqlalchemy.dialects.postgresql import UUID
|
from sqlalchemy.dialects.postgresql import UUID
|
||||||
from app.core.database import Base
|
from app.core.database import Base
|
||||||
@@ -76,6 +76,8 @@ class User(Base):
|
|||||||
|
|
||||||
# Onboarding
|
# Onboarding
|
||||||
onboarding_dismissed: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False, server_default="false")
|
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)
|
# Branding (solo pros without a team)
|
||||||
logo_data: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
logo_data: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user