from typing import TYPE_CHECKING

from sqlalchemy import Boolean, Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship

from app.db.base_class import Base

if TYPE_CHECKING:
    from .item import Item  # noqa: F401
    from .enum import Membership

class User(Base):
  id = Column(Integer, primary_key=True, index=True)
  full_name = Column(String(20), index=True)
  email = Column(String(30), unique=True, index=True, nullable=False)
  hashed_password = Column(String(100), nullable=False)
  membership_status = Column(String(10), 
                      ForeignKey("membership.status", onupdate="CASCADE", ondelete="RESTRICT"), 
                      default="normal")
  available_time = Column(Integer, default=0)
  is_active = Column(Boolean(), default=True)
  is_superuser = Column(Boolean(), default=False)
  items = relationship("Item", back_populates="owner")
  videos = relationship("Video", back_populates="owner")
