43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
from __future__ import annotations
|
|
|
|
import os
|
|
from pathlib import Path
|
|
from urllib.parse import quote_plus
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
|
DEFAULT_SQLITE_PATH = BASE_DIR / "instance" / "ksp.sqlite3"
|
|
|
|
load_dotenv(BASE_DIR / ".env")
|
|
|
|
|
|
def _build_database_uri() -> str:
|
|
host = os.getenv("PGHOST")
|
|
port = os.getenv("PGPORT")
|
|
user = os.getenv("PGUSER")
|
|
password = os.getenv("PGPASSWORD")
|
|
database = os.getenv("PGDATABASE")
|
|
|
|
if all([host, port, user, password, database]):
|
|
return (
|
|
"postgresql+psycopg://"
|
|
f"{quote_plus(user)}:{quote_plus(password)}@{host}:{port}/{quote_plus(database)}"
|
|
)
|
|
|
|
DEFAULT_SQLITE_PATH.parent.mkdir(parents=True, exist_ok=True)
|
|
return f"sqlite:///{DEFAULT_SQLITE_PATH.as_posix()}"
|
|
|
|
|
|
class Config:
|
|
APP_ENV = os.getenv("APP_ENV", "development")
|
|
APP_PORT = int(os.getenv("APP_PORT", "8000"))
|
|
APP_SECRET_KEY = os.getenv("APP_SECRET_KEY", "development-only-secret-key")
|
|
PROJECT_TITLE = os.getenv("PROJECT_TITLE", "KSP Data Hangar")
|
|
WORKBOOK_PATH = os.getenv("WORKBOOK_PATH", "KSP Engine Tweak Chart.xlsx")
|
|
SQLALCHEMY_DATABASE_URI = _build_database_uri()
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
SQLALCHEMY_ECHO = os.getenv("SQLALCHEMY_ECHO", "false").lower() == "true"
|
|
SECRET_KEY = APP_SECRET_KEY
|