from sqlalchemy import Column, Integer, String, DateTime, Boolean, ForeignKey
from sqlalchemy.sql import func
from .base import Base
class Admin(Base):
"""Admin user model for authentication and management"""
__tablename__ = "admins"
id = Column(Integer, primary_key=True)
username = Column(String(100), unique=True, nullable=False, index=True)
email = Column(String(255), unique=True, nullable=False)
password_hash = Column(String(255), nullable=False)
is_active = Column(Boolean, default=True, nullable=False)
created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False)
created_by_id = Column(Integer, ForeignKey("admins.id"), nullable=True) # NULL for superadmin
def __repr__(self):
return f"<Admin(username='{self.username}', email='{self.email}', active={self.is_active})>"