SuZeAI
feat: add subscription management with user plan tracking and response schema
d249b9c
Raw
History Blame Contribute Delete
1.28 kB
from sqlalchemy import Column, String, DateTime, func
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from app.core.database import Base
import uuid
class User(Base):
__tablename__ = "users"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
email = Column(String(255), unique=True, nullable=False, index=True)
password_hash = Column(String(255), nullable=False)
# Subscription plan: "free" | "premium". Everyone starts on "free" — there is no
# self-serve payment flow yet, so this only ever changes via a manual DB update.
plan = Column(String(20), nullable=False, server_default="free", default="free")
premium_renews_at = Column(DateTime(timezone=True), nullable=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
# Relationships
body_profile = relationship("BodyProfile", back_populates="user", uselist=False, cascade="all, delete-orphan")
wardrobe_items = relationship("WardrobeItem", back_populates="user", cascade="all, delete-orphan")
try_on_tasks = relationship("TryOnTask", back_populates="user", cascade="all, delete-orphan")