Epic: Projection schema and rebuild capability #21

Open
opened 2026-03-14 23:53:08 +00:00 by freemo · 0 comments
Owner

Background

Three projectors reference tables (:game_objects, :players, :rooms) that have no schema definitions or migrations. rebuild_world_state is a verification stub with comments saying "could be automatically added" and "would rebuild projections if needed" but does neither.

Demonstrable Outcome

Projection tables are auto-created on first enable via a schema migration module. rebuild_world_state performs actual event replay to rebuild projections from scratch.

Acceptance Criteria

  • SchemaMigration module creates all three projection tables
  • rebuild_world_state clears and replays all events through projectors
  • Missing objects are automatically added to the event store
  • Snapshot threshold is configured at 500 events per aggregate
  • Unit tests cover schema creation and rebuild
## Background Three projectors reference tables (`:game_objects`, `:players`, `:rooms`) that have no schema definitions or migrations. `rebuild_world_state` is a verification stub with comments saying "could be automatically added" and "would rebuild projections if needed" but does neither. ## Demonstrable Outcome Projection tables are auto-created on first enable via a schema migration module. `rebuild_world_state` performs actual event replay to rebuild projections from scratch. ## Acceptance Criteria - [ ] `SchemaMigration` module creates all three projection tables - [ ] `rebuild_world_state` clears and replays all events through projectors - [ ] Missing objects are automatically added to the event store - [ ] Snapshot threshold is configured at 500 events per aggregate - [ ] Unit tests cover schema creation and rebuild
freemo self-assigned this 2026-03-15 04:25:22 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference: aethyr/Aethyr#21
No description provided.