yeswanth0212/token_system
1
1from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Enum2from sqlalchemy.orm import relationship3import enum4from database import Base5import datetime6 7class TokenStatus(str, enum.Enum):8 waiting = "waiting"9 serving = "serving"10 completed = "completed"11 cancelled = "cancelled"12 skipped = "skipped"13 14class Token(Base):15 __tablename__ = "tokens"16 17 id = Column(Integer, primary_key=True, index=True)18 token_number = Column(String, unique=True, index=True)19 patient_name = Column(String, index=True)20 department = Column(String, default="General", index=True) # General, Pediatrics, Cardiology, Dental21 priority = Column(Integer, default=0) # 0 = standard, 1 = priority/senior22 status = Column(Enum(TokenStatus), default=TokenStatus.waiting)23 created_at = Column(DateTime, default=datetime.datetime.utcnow)24 served_at = Column(DateTime, nullable=True)25 completed_at = Column(DateTime, nullable=True)26 27 counter_id = Column(Integer, ForeignKey("service_counters.id"), nullable=True)28 counter = relationship("ServiceCounter", back_populates="current_token")29 30class ServiceCounter(Base):31 __tablename__ = "service_counters"32 33 id = Column(Integer, primary_key=True, index=True)34 name = Column(String, unique=True, index=True) # e.g., "Counter 1"35 status = Column(String, default="active") # active, paused, offline36 supported_departments = Column(String, default="All") # comma-separated e.g. "General, Pediatrics" or "All"37 38 # One-to-one relationship for the current token being served39 current_token = relationship("Token", back_populates="counter", uselist=False, foreign_keys=[Token.counter_id])40 41 