import os
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent
DATA_DIR = Path(os.environ.get("SITE_DATA_DIR", BASE_DIR / "data"))
DB_PATH = Path(os.environ.get("SITE_DB_PATH", DATA_DIR / "site.db"))
UPLOAD_DIR = Path(os.environ.get("SITE_UPLOAD_DIR", DATA_DIR / "files"))

# sqlite（小规模/开发）、mysql（集团大并发）或 postgres（容器化部署默认）
DB_TYPE = os.environ.get("SITE_DB_TYPE", "sqlite").lower()
if DB_TYPE in ("postgresql", "pg"):
    DB_TYPE = "postgres"
MYSQL_HOST = os.environ.get("SITE_MYSQL_HOST", "127.0.0.1")
MYSQL_PORT = int(os.environ.get("SITE_MYSQL_PORT", "3306"))
MYSQL_USER = os.environ.get("SITE_MYSQL_USER", "sitesvc")
MYSQL_PASSWORD = os.environ.get("SITE_MYSQL_PASSWORD", "")
MYSQL_DB = os.environ.get("SITE_MYSQL_DB", "software_site")
MYSQL_SOCKET = os.environ.get("SITE_MYSQL_SOCKET", "")

PG_HOST = os.environ.get("SITE_PG_HOST", "127.0.0.1")
PG_PORT = int(os.environ.get("SITE_PG_PORT", "5432"))
PG_USER = os.environ.get("SITE_PG_USER", "sitesvc")
PG_PASSWORD = os.environ.get("SITE_PG_PASSWORD", "")
PG_DB = os.environ.get("SITE_PG_DB", "software_site")

SECRET_KEY = os.environ.get("SITE_SECRET_KEY", "change-me-in-production-" + os.environ.get("HOSTNAME", "local"))

DEFAULT_ADMIN_USER = "admin"
DEFAULT_ADMIN_PASSWORD = "admin123"

ALLOWED_EXTENSIONS = {
    ".exe", ".msi", ".zip", ".rar", ".7z", ".tar", ".gz", ".xz", ".bz2", ".zst",
    ".deb", ".rpm", ".iso", ".img", ".apk", ".dmg", ".pkg", ".bin",
    ".appimage", ".run", ".sh", ".pdf", ".doc", ".docx", ".txt",
    ".md",
    ".mhtml", ".mht", ".html", ".htm",
    ".xls", ".xlsx", ".ppt", ".pptx",
}

MAX_UPLOAD_SIZE = int(os.environ.get("SITE_MAX_UPLOAD_MB", "2048")) * 1024 * 1024

SITE_NAME = os.environ.get("SITE_NAME", "软件分享中心")

# 站点版本号：每次新增或改进功能时递增次版本号（如 1.17.0 → 1.18.0）
APP_VERSION = "1.18.0"


def ensure_dirs():
    DATA_DIR.mkdir(parents=True, exist_ok=True)
    UPLOAD_DIR.mkdir(parents=True, exist_ok=True)
