from sqlalchemy import Column, Integer, String, DateTime, Text, ForeignKey
from sqlalchemy.orm import relationship
from src.infrastructure.models.user_model import Base

class UserTypeModel(Base):
    """
    SQLAlchemy ORM model mapping to existing 'user_types' table in MySQL.
    """
    __tablename__ = "user_types"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String(191))
    created_by = Column(Integer)
    created_at = Column(DateTime)
    updated_at = Column(DateTime)
    deleted_at = Column(DateTime)

    permission = relationship("UserPermissionModel", back_populates="user_type", uselist=False)


class UserPermissionModel(Base):
    """
    SQLAlchemy ORM model mapping to existing 'user_permissions' table in MySQL.
    """
    __tablename__ = "user_permissions"

    id = Column(Integer, primary_key=True, index=True)
    user_type_id = Column(Integer, ForeignKey("user_types.id"))
    permissions = Column(Text)
    created_by = Column(Integer)
    created_at = Column(DateTime)
    updated_at = Column(DateTime)

    user_type = relationship("UserTypeModel", back_populates="permission")
