48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
app_name: str = "mktapi.ose.tw"
|
|
app_version: str = "0.1.0"
|
|
app_env: str = "development"
|
|
log_level: str = "INFO"
|
|
api_prefix: str = "/api"
|
|
|
|
db_host: str = "127.0.0.1"
|
|
db_port: int = 5432
|
|
db_database: str = "mkt.ose.tw"
|
|
db_user: str = "mkt_ose"
|
|
db_password: str = ""
|
|
database_url: str = "postgresql+asyncpg://mkt_ose:@127.0.0.1:5432/mkt.ose.tw"
|
|
|
|
directus_base_url: str = "https://mktcms.ose.tw"
|
|
directus_admin_token: str | None = None
|
|
directus_timeout: float = 15.0
|
|
cors_allowed_origins: str = (
|
|
"http://127.0.0.1:3000,http://localhost:3000,"
|
|
"http://127.0.0.1:5173,http://localhost:5173,"
|
|
"https://127.0.0.1:3000,https://localhost:3000,"
|
|
"https://127.0.0.1:5173,https://localhost:5173,"
|
|
"https://mkt.ose.tw"
|
|
)
|
|
|
|
@property
|
|
def cors_allowed_origin_list(self) -> list[str]:
|
|
"""Return normalized CORS origins from a simple comma-separated env value."""
|
|
|
|
return [
|
|
origin.strip()
|
|
for origin in self.cors_allowed_origins.split(",")
|
|
if origin.strip()
|
|
]
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=(".env.fastapi.development", ".env"),
|
|
env_file_encoding="utf-8",
|
|
case_sensitive=False,
|
|
extra="ignore",
|
|
)
|
|
|
|
|
|
settings = Settings()
|