Skip to content

ToolBoxV2 FileHandler V2 API Reference

Unified Storage mit UserDataAPI Integration.


Überblick

FileHandlerV2 ist der moderne, einheitliche Storage-Handler mit: - Automatische Scope-Erkennung aus Dateinamen - UserDataAPI Backend für Cloud-Storage - Sync und Async APIs - Konfigurierbare Verschlüsselung - Legacy-Kompatibilität


StorageScope Enum

Definiert die Zugriffsebenen für Daten.

Scope Beschreibung
USER_PRIVATE Nur Benutzer, verschlüsselt, Cloud-Sync
USER_PUBLIC Benutzer-Datei, andere können lesen
PUBLIC_READ Admin schreibt, alle lesen
PUBLIC_RW Alle lesen/schreiben
SERVER_SCOPE Server-spezifische Daten
MOD_DATA Mod-spezifisch (Standard)
CONFIG Konfigurationsdateien

StorageBackend Enum

Backend Beschreibung
LOCAL Lokale JSON-Dateien
USER_DATA_API UserDataAPI (MinIO/Redis)
AUTO Automatische Erkennung

Dateinamen-Konventionen

Für .data Dateien:

Präfix Scope
private.data USER_PRIVATE
public.data USER_PUBLIC
shared.data PUBLIC_RW
server.data SERVER_SCOPE
mod.data MOD_DATA

FileHandlerV2 Konstruktor

FileHandlerV2(
    filename: str,           # ".config" oder ".data"
    name: str = "mainTool", # Modulname
    scope: Optional[StorageScope] = None,
    backend: StorageBackend = StorageBackend.AUTO,
    encrypt: Optional[bool] = None,
    request: Optional[RequestData] = None,
    user_context: Optional[UserContext] = None,
    base_path: Optional[Path] = None,
)

Legacy API (Sync)

load_file_handler() -> FileHandlerV2

Lädt alle Daten aus dem Storage.

fh = FileHandlerV2("settings.config", name="MyMod")
fh.load_file_handler()

save_file_handler() -> FileHandlerV2

Speichert alle Daten persistenter.

fh.add_to_save_file_handler("key", "value")
fh.save_file_handler()

get_file_handler(key: str, default: Any = None) -> Any

Holt einen Wert.

value = fh.get_file_handler("username", "default_user")

add_to_save_file_handler(key: str, value: Any) -> bool

Setzt einen Wert.

fh.add_to_save_file_handler("theme", "dark")

remove_key_file_handler(key: str) -> None

Löscht einen Schlüssel.

set_defaults_keys_file_handler(keys: Dict, defaults: Dict) -> None

Setzt Key-Mappings und Standardwerte.

fh.set_defaults_keys_file_handler(
    {"un": "username"},
    {"un": "default_user"}
)

delete_file() -> None

Löscht die gesamte Storage-Datei.


V2 API (Sync)

get(key: str, default: Any = None) -> Any

Holt einen Wert.

set(key: str, value: Any) -> bool

Setzt einen Wert.

delete(key: str) -> None

Löscht einen Schlüssel.

keys() -> List[str]

Gibt alle Schlüssel zurück.

items() -> List[tuple]

Gibt alle Key-Value Paare zurück.

to_dict() -> Dict

Gibt alle Daten als Dictionary.

update(data: Dict) -> FileHandlerV2

Aktualisiert mehrere Werte.


Async API

aload_file_handler() -> FileHandlerV2

Async laden.

asave_file_handler() -> FileHandlerV2

Async speichern.

aget_file_handler(key: str, default: Any = None) -> Any

Async holen.

aget(key: str, default: Any = None) -> Any

Async holen (V2).

aset(key: str, value: Any) -> bool

Async setzen.


Context Manager

# Sync
with FileHandlerV2("settings.config", name="MyMod") as fh:
    value = fh["key"]

# Async
async with FileHandlerV2("settings.config", name="MyMod") as fh:
    value = await fh.aget("key")

Dict-ähnlicher Zugriff

fh = FileHandlerV2("data.data", name="MyMod")
fh.load()

fh["name"] = "Test"     # Set
print(fh["name"])         # Get
del fh["name"]            # Delete
"name" in fh              # Check
len(fh)                    # Length
for k in fh:               # Iteration
    print(k)

Factory Functions

create_config_handler(name: str, filename: str = "settings.config", defaults: Dict = None) -> FileHandlerV2

Erstellt einen Handler für Konfigurationsdaten (immer lokal, verschlüsselt).

fh = create_config_handler("MyMod", defaults={"theme": "light"})

create_data_handler(name: str, scope: StorageScope = MOD_DATA, request: RequestData = None, backend: StorageBackend = AUTO) -> FileHandlerV2

Erstellt einen Handler für Benutzer/Mod-Daten.

fh = create_data_handler("MyMod", scope=StorageScope.USER_PRIVATE, request=request)

UserContext

from toolboxv2.utils.system.file_handler import (
    FileHandlerV2,
    StorageScope,
    StorageBackend,
    UserContext,
    set_current_context,
    get_current_context,
    create_config_handler,
    create_data_handler,
    LocalStorageBackend
)

# Aus Request
ctx = UserContext.from_request(request)

# Aus Session
ctx = UserContext.from_session(session)

# System-Kontext
ctx = UserContext.system()

# Anonym
ctx = UserContext.anonymous()

# Global setzen
set_current_context(ctx)
current = get_current_context()