Gestion d'état avancée

La gestion d'état dans les plugins PluginFactory repose sur des principes fonctionnels : état immutable, transformations pures, et events sourcing pour la traçabilité.

Principes fondamentaux

Un plugin bien conçu ne mutate jamais l'état directement. Chaque action produit un nouvel état dérivé de l'état précédent.

// ✅ Correct
const newState = { ...currentState, count: currentState.count + 1 };

// ❌ À éviter
currentState.count += 1;

Context et persistance

Utilisez le contexte de session pour persister des données entre les appels :

export const myPlugin = createPlugin({
  onBeforeCall: (ctx) => {
    const previousData = ctx.session.get("myData");
    // ...
  },
  onAfterCall: (ctx, result) => {
    ctx.session.set("myData", result);
  },
});

Transactions

Pour les opérations multi-étapes, encapsulez dans une transaction pour garantir la cohérence :

await ctx.db.transaction(async (tx) => {
  await tx.create({ ... });
  await tx.update({ ... });
});

Previous

← Page précédente

Next

Page suivante →