from datetime import datetime from sqlalchemy import String, DateTime, func from sqlalchemy.orm import Mapped, mapped_column, relationship from app.database import Base class User(Base): __tablename__ = "users" id: Mapped[int] = mapped_column(primary_key=True) email: Mapped[str] = mapped_column( String(255), unique=True, nullable=False, index=True ) password_hash: Mapped[str] = mapped_column(String(255), nullable=False) name: Mapped[str] = mapped_column(String(255), nullable=False) role: Mapped[str] = mapped_column(String(50), default="member") created_at: Mapped[datetime] = mapped_column(DateTime, default=func.now()) updated_at: Mapped[datetime] = mapped_column( DateTime, default=func.now(), onupdate=func.now() ) # Relationships owned_workspaces = relationship("Workspace", back_populates="owner") workspace_memberships = relationship("WorkspaceMember", back_populates="user") created_records = relationship( "Record", back_populates="created_by_user", foreign_keys="Record.created_by" ) updated_records = relationship( "Record", back_populates="updated_by_user", foreign_keys="Record.updated_by" ) comments = relationship("Comment", back_populates="user") views = relationship("View", back_populates="created_by_user") def __repr__(self): return f""