Files
2026-05-08 15:16:04 +08:00

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