from datetime import datetime, timezone from enum import Enum from sqlalchemy import Column, Integer, String, Text, DateTime, Enum as SQLEnum from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class UserRole(str, Enum): SYSTEM_ADMIN = "system_admin" ADMIN = "admin" USER = "user" class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, autoincrement=True) username = Column(String(50), unique=True, nullable=False) password = Column(String(255), nullable=False) role = Column(SQLEnum(UserRole), nullable=False, default=UserRole.USER) description = Column(Text) created_at = Column(DateTime, default=lambda: datetime.now(timezone.utc)) updated_at = Column(DateTime, default=lambda: datetime.now(timezone.utc), onupdate=lambda: datetime.now(timezone.utc)) def __repr__(self): return f""