Update project configuration files, and API routes accordingly. Add SQLite runtime file ignores to .gitignore for better file management.
This commit is contained in:
56
bot/utils/db_paths.py
Normal file
56
bot/utils/db_paths.py
Normal file
@@ -0,0 +1,56 @@
|
||||
"""Storage path helpers — multi-instance via BOT_INSTANCE_ID env var.
|
||||
|
||||
Without BOT_INSTANCE_ID (default):
|
||||
db_path("prefix.db") -> bot/db/prefix.db
|
||||
jsondb_path("x.json") -> bot/jsondb/x.json
|
||||
|
||||
With BOT_INSTANCE_ID=prod-a:
|
||||
db_path("prefix.db") -> bot/db/prod-a/prefix.db
|
||||
jsondb_path("x.json") -> bot/db/prod-a/jsondb/x.json
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
_BOT_ROOT = Path(__file__).resolve().parent.parent
|
||||
_INSTANCE_ID = os.getenv("BOT_INSTANCE_ID", "").strip()
|
||||
|
||||
|
||||
def _instance_db_dir() -> Path:
|
||||
base = _BOT_ROOT / "db"
|
||||
if _INSTANCE_ID:
|
||||
base = base / _INSTANCE_ID
|
||||
base.mkdir(parents=True, exist_ok=True)
|
||||
return base
|
||||
|
||||
|
||||
def db_path(filename: str) -> str:
|
||||
"""SQLite and other files under bot/db/ (or bot/db/<instance>/)."""
|
||||
return str(_instance_db_dir() / filename)
|
||||
|
||||
|
||||
def jsondb_path(filename: str) -> str:
|
||||
"""JSON config files — bot/jsondb/ or bot/db/<instance>/jsondb/."""
|
||||
if _INSTANCE_ID:
|
||||
base = _instance_db_dir() / "jsondb"
|
||||
else:
|
||||
base = _BOT_ROOT / "jsondb"
|
||||
base.mkdir(parents=True, exist_ok=True)
|
||||
return str(base / filename)
|
||||
|
||||
|
||||
def bot_root_json_path(filename: str) -> str:
|
||||
"""Legacy JSON at bot/<filename> (e.g. ignore.json) — isolated per instance when set."""
|
||||
if _INSTANCE_ID:
|
||||
return jsondb_path(filename)
|
||||
return str(_BOT_ROOT / filename)
|
||||
|
||||
|
||||
def resolve_db_path(path: str) -> str:
|
||||
"""Normalize legacy 'db/file.db' strings (safety net for API layer)."""
|
||||
if path.startswith("db/"):
|
||||
return db_path(path[3:])
|
||||
if path.startswith("jsondb/"):
|
||||
return jsondb_path(path[7:])
|
||||
return path
|
||||
Reference in New Issue
Block a user