From 6c5e35d537f4f4663d1a64b1ca8679e7d18e8b5f Mon Sep 17 00:00:00 2001 From: bonamin Date: Mon, 1 Jun 2026 00:38:50 +0300 Subject: [PATCH] fix: use AppData path for SQLite DB on Windows, absolute path on Linux The default sqlite:////app/data/cloud.db path only works inside Docker. On Windows, Controlled Folder Access blocks writes to arbitrary paths. Now mirrors the same pattern as local_backend/config.py: - Windows: %LOCALAPPDATA%/xenia_cloud/cloud.db (always writable) - Linux/Docker: next to main.py (overridden by DATABASE_URL in .env) Co-Authored-By: Claude Sonnet 4.6 --- cloud_backend/config.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cloud_backend/config.py b/cloud_backend/config.py index e54c3f0..46429a8 100644 --- a/cloud_backend/config.py +++ b/cloud_backend/config.py @@ -1,12 +1,20 @@ +import os from pathlib import Path from pydantic_settings import BaseSettings _HERE = Path(__file__).parent +if os.name == "nt": + _DB_DIR = Path(os.environ.get("LOCALAPPDATA", Path.home() / "AppData" / "Local")) / "xenia_cloud" + _DB_DIR.mkdir(parents=True, exist_ok=True) + _DEFAULT_DB = _DB_DIR / "cloud.db" +else: + _DEFAULT_DB = _HERE / "cloud.db" + class Settings(BaseSettings): SECRET_KEY: str = "change-me-generate-a-long-random-string" - DATABASE_URL: str = "sqlite:////app/data/cloud.db" + DATABASE_URL: str = f"sqlite:///{_DEFAULT_DB.as_posix()}" ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 ADMIN_USERNAME: str = "sysadmin" ADMIN_PASSWORD: str = "changeme"