from sqlalchemy import Column, Integer, ForeignKey, String, Text
from sqlalchemy.orm import relationship
from src.apps.base.models.base import Base
from sqlalchemy.ext.hybrid import hybrid_property


class SiteMaster(Base):
    """
    SiteMaster Model: ORM class for SiteMaster Entity
    """

    __tablename__ = "site_master"

    id = Column(Integer, primary_key=True, index=True, autoincrement=True)
    key = Column(String(255))
    value = Column(Text)
    label = Column(Text)
    group = Column(String(255))
    display_order = Column(Integer, default=0)

    parent_id = Column(Integer, ForeignKey("site_master.id"), index=True, nullable=True)
    parent = relationship(lambda: SiteMaster, remote_side=id, backref="children")


@hybrid_property
def code(self) -> str:
    code_array = self.label.split("-")
    return code_array[1]
