// Async-Context fuer parallele Runs. Erlaubt es, accountId entlang der ganzen Async-Stack
// zu propagieren ohne sie als Parameter durch jede Funktion durchzureichen.
// Der Logger und Session._emit lesen die accountId von hier.
import { AsyncLocalStorage } from 'node:async_hooks';

const accountStorage = new AsyncLocalStorage();

export function withAccount(accountId, fn) {
  return accountStorage.run({ accountId }, fn);
}

export function currentAccountId() {
  return accountStorage.getStore()?.accountId ?? null;
}
