Spaces:
Runtime error
Runtime error
File size: 1,634 Bytes
66340f1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
import sys
from typing import Any, Dict, List, Optional
from pydantic import BaseSettings, HttpUrl, PostgresDsn, validator
from pydantic.networks import AnyHttpUrl
class Settings(BaseSettings):
PROJECT_NAME: str = "QueryX"
SENTRY_DSN: Optional[HttpUrl] = None
API_PATH: str = "/api/v1"
ACCESS_TOKEN_EXPIRE_MINUTES: int = 7 * 24 * 60 # 7 days
BACKEND_CORS_ORIGINS: List[AnyHttpUrl] = [
"http://0.0.0.0:9000",
"http://0.0.0.0:8000",
]
# The following variables need to be defined in environment
TEST_DATABASE_URL: Optional[PostgresDsn]
DATABASE_URL: PostgresDsn
ASYNC_DATABASE_URL: Optional[PostgresDsn]
@validator("DATABASE_URL", pre=True)
def build_test_database_url(cls, v: Optional[str], values: Dict[str, Any]):
"""Overrides DATABASE_URL with TEST_DATABASE_URL in test environment."""
url = v
if "pytest" in sys.modules:
if not values.get("TEST_DATABASE_URL"):
raise Exception(
"pytest detected, but TEST_DATABASE_URL is not set in environment"
)
url = values["TEST_DATABASE_URL"]
if url:
return url.replace("postgres://", "postgresql://")
return url
@validator("ASYNC_DATABASE_URL")
def build_async_database_url(cls, v: Optional[str], values: Dict[str, Any]):
"""Builds ASYNC_DATABASE_URL from DATABASE_URL."""
v = values["DATABASE_URL"]
return v.replace("postgresql", "postgresql+asyncpg", 1) if v else v
SECRET_KEY: str
# END: required environment variables
settings = Settings()
|