from sqlalchemy import Boolean, Text
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.ext.hybrid import hybrid_property
from src.apps.base.models.base import Base


class CDN(Base):
    """
    Settings Model: ORM class for CDN Entity
    """

    __tablename__ = "cdns"

    id: Mapped[int] = mapped_column(primary_key=True, index=True, autoincrement=True)
    label: Mapped[str | None] = mapped_column(Text)
    host: Mapped[str] = mapped_column(Text, default="")
    root: Mapped[str] = mapped_column(Text, default="")
    path: Mapped[str] = mapped_column(Text, default="")
    is_active: Mapped[bool] = mapped_column(Boolean, default=False)

    @hybrid_property
    def serve_path(self) -> str:
        return self.host + self.path

    @hybrid_property
    def upload_path(self) -> str:
        return self.root + self.path
