Introduire ProcessManagerShape pour les sagas de cascade (vocabulaire saga ≠ projector) #22
Labels
No labels
bug
enhancement
pr-split
question
security
transaction-matcher
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
momsse/octant#22
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Issue de suivi, née de la review de la PR #52 (#8) — voir le fil sur
group-deletion.cascade-saga.ts: https://github.com/viziertronic/octant/pull/52#discussion_r3422165497Problème
Les
RoleDeletionCascadeSaga/GroupDeletionCascadeSagasont nommées « Saga » maisimplements ProjectorShape<E>. Tension de vocabulaire :Nos
*CascadeSagaréagissent àRoleDeletedEvent/GroupDeletedEventet émettent des commands (RevokeUserRoleAssignmentCommand,RemoveRoleFromGroupCommand,RevokeGroupMembershipCommand) viaexecuteCommand— ce sont des Process Managers. Ellesimplements ProjectorShapeuniquement parce que le runner de projection (checkpoint, replay, livraison at-least-once, hook{ name, project, reset }) est réutilisé comme mécanisme d'abonnement. → nom orienté lecture pour un usage orienté écriture.Solution retenue (option 2 de la discussion)
Introduire un type
ProcessManagerShape<Event>dans@octant/event-sourcing(projection.ts), structurellement équivalent àProjectorShape(le runner reste inchangé) :…l'exporter depuis l'index, puis basculer les deux sagas sur
ProcessManagerShape<RoleEvent>/ProcessManagerShape<GroupEvent>(et renommer la variable localeprojector→processManager). LesInlineProjectorsdes repos restent desProjectorShape(ce sont de vrais projecteurs read-model).Périmètre / dépendances
@octant/event-sourcing(ajout du type + export) + les 2 sagas de l'authorization.Hors scope (pistes plus profondes, écartées pour l'instant)
EventSubscriberShape/EventReactionShape) avecProjectionetSagacomme spécialisations — rename transverse de tout le package event-sourcing + toutes les projections.ProcessManagerNamedistinct deProjectionNamepour la clé de checkpoint.🤖 Generated with Claude Code