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({ ... });
});