40 lines
958 B
Python
Raw Normal View History

2026-07-23 01:15:04 +02:00
# retoor <retoor@molodetz.nl>
from __future__ import annotations
import inspect
from typing import Any
import devplacepy.database as db_module
from devplacepy_services.base.db_codec import decode_arg, encode_result, is_write
def build_registry() -> dict[str, Any]:
registry: dict[str, Any] = {}
for name in db_module.__all__:
target = getattr(db_module, name, None)
if target is None or not callable(target):
continue
if inspect.isclass(target):
continue
registry[name] = target
return registry
REGISTRY = build_registry()
_encode_result = encode_result
def run_with_db(db_conn, fn, args, kwargs):
from devplacepy_services.database.db_patch import use_db, reset_db
token = use_db(db_conn)
try:
decoded_args = decode_arg(args)
decoded_kwargs = decode_arg(kwargs)
return fn(*decoded_args, **decoded_kwargs)
finally:
reset_db(token)