"""Application settings — reads from environment / .env file."""

from pydantic_settings import BaseSettings
from pydantic import Field


class Settings(BaseSettings):
    lseg_app_key: str = Field(default="", alias="LSEG_APP_KEY")
    lseg_username: str = Field(default="", alias="LSEG_USERNAME")
    lseg_password: str = Field(default="", alias="LSEG_PASSWORD")

    # Comma-separated list of ISINs to track (e.g. "XS1234,XS5678")
    lseg_isins: str = Field(default="", alias="LSEG_ISINS")

    # Comma-separated issuer names — system will search for all bonds per issuer
    lseg_issuers: str = Field(default="", alias="LSEG_ISSUERS")

    # Max bonds fetched per issuer when searching by name
    bonds_per_issuer: int = Field(default=100, alias="BONDS_PER_ISSUER")

    # Fallback: path to directory of downloaded Excel/CSV files
    lseg_data_path: str = Field(default="./lseg_data", alias="LSEG_DATA_PATH")

    cors_origins: str = Field(default="http://localhost:3000", alias="CORS_ORIGINS")

    @property
    def isin_list(self) -> list[str]:
        return [i.strip() for i in self.lseg_isins.split(",") if i.strip()]

    @property
    def issuer_list(self) -> list[str]:
        return [i.strip() for i in self.lseg_issuers.split(",") if i.strip()]

    model_config = {"env_file": ".env", "extra": "ignore"}

    @property
    def cors_origin_list(self) -> list[str]:
        return [o.strip() for o in self.cors_origins.split(",")]


settings = Settings()
