feat/stream-type-191 #192

Merged
einar merged 12 commits from feat/stream-type-191 into main 2026-03-06 15:29:06 +00:00
Owner
No description provided.
chore: save pre-refactor benchmarks — ref #191
Some checks failed
CI / test-sqlitestore (push) Failing after 4s
CI / test-codec-otelkit (push) Successful in 14s
CI / test-integration (push) Failing after 7s
CI / benchmarks (push) Failing after 5s
CI / test-nats (push) Failing after 35s
CI / test-pgstore (push) Successful in 51s
CI / test-core (push) Successful in 1m21s
b89a5b35c0
feat: add StreamType to core types, interfaces, and all store implementations — ref #191
Some checks failed
CI / test-sqlitestore (push) Failing after 4s
CI / test-pgstore (push) Failing after 5s
CI / test-nats (push) Failing after 5s
CI / test-integration (push) Failing after 7s
CI / benchmarks (push) Failing after 6s
CI / test-codec-otelkit (push) Failing after 10s
CI / test-core (push) Failing after 52s
f4d8c6f379
- Event struct gets StreamType field
- EventStore interface: Append/Load/LoadFrom take streamType parameter
- Decider struct gets StreamType field (validated at command.Register)
- MemoryStore uses composite key internally
- Updated all wrappers: crypto, tenant, hooks, middleware, otelkit, observability
- Updated command package to read StreamType from Decider
- Updated conformance suite and eventstoretest
- Updated subscription GlobalEvent with StreamType field
- Added ReadByStreamType to MemoryStore
- Added StreamTypeReader interface
chore: add *.test to gitignore, remove test binaries
Some checks failed
CI / test-sqlitestore (push) Failing after 3s
CI / test-pgstore (push) Failing after 4s
CI / test-nats (push) Failing after 5s
CI / test-integration (push) Failing after 5s
CI / benchmarks (push) Failing after 4s
CI / test-codec-otelkit (push) Failing after 9s
CI / test-core (push) Failing after 1m9s
7a19551b9a
fix: add StreamType to all Decider literals in tests, fix double-application issues — ref #191
Some checks failed
CI / test-sqlitestore (push) Failing after 3s
CI / test-pgstore (push) Failing after 5s
CI / test-nats (push) Failing after 5s
CI / test-integration (push) Failing after 5s
CI / benchmarks (push) Failing after 4s
CI / test-codec-otelkit (push) Failing after 11s
CI / test-core (push) Failing after 1m15s
599ad4410b
feat: replace StreamID() with Stream() on Command interface — ref #191
Some checks failed
CI / test-sqlitestore (push) Failing after 3s
CI / test-pgstore (push) Failing after 4s
CI / test-nats (push) Failing after 4s
CI / test-integration (push) Failing after 5s
CI / test-codec-otelkit (push) Failing after 7s
CI / benchmarks (push) Failing after 3s
CI / test-core (push) Failing after 1m2s
0c785f648f
- Add eskit.Stream struct (Type + ID)
- Command interface: Stream() eskit.Stream replaces StreamID() string
- command.Register gets streamType from cmd.Stream().Type
- Remove StreamType from Decider (comes from Command now)
- Update all command implementations across codebase
- CommandHandler.Handle takes streamType parameter
- Worker keys use stream.String() for proper isolation
Register now takes streamType + streamID extractor:
  command.Register(bus, store, decider, "order", func(c PlaceOrder) string { return c.OrderID })

HintNewStream/HintExisting are RegisterOption values directly.
Domain commands have zero framework imports.
fix: update all tests to new Register API (streamType + extractor) — ref #191
Some checks failed
CI / test-sqlitestore (push) Failing after 3s
CI / test-pgstore (push) Failing after 5s
CI / test-nats (push) Failing after 5s
CI / test-integration (push) Failing after 5s
CI / benchmarks (push) Failing after 4s
CI / test-codec-otelkit (push) Failing after 8s
CI / test-core (push) Successful in 1m18s
18e857ffb0
fix: update stores, examples, and remaining tests for streamType API — ref #191
Some checks failed
CI / test-sqlitestore (push) Failing after 3s
CI / test-pgstore (push) Failing after 5s
CI / test-nats (push) Failing after 5s
CI / test-integration (push) Failing after 6s
CI / benchmarks (push) Failing after 4s
CI / test-codec-otelkit (push) Failing after 8s
CI / test-core (push) Successful in 1m43s
eaf9402c5d
fix: integration tests for new API, remove stale processor tests — ref #191
Some checks failed
CI / test-sqlitestore (push) Failing after 4s
CI / test-pgstore (push) Failing after 6s
CI / test-nats (push) Failing after 6s
CI / test-codec-otelkit (push) Failing after 9s
CI / benchmarks (push) Failing after 4s
CI / test-core (push) Successful in 1m25s
CI / test-integration (push) Failing after 1m29s
797f3c6ec8
feat: red team tests for stream type + ID extractor design — ref #191
Some checks failed
CI / test-sqlitestore (push) Failing after 3s
CI / test-pgstore (push) Failing after 6s
CI / test-nats (push) Failing after 5s
CI / benchmarks (push) Failing after 4s
CI / test-codec-otelkit (push) Failing after 9s
CI / test-core (push) Successful in 1m41s
CI / test-integration (push) Failing after 1m34s
1192f2e293
Tests cover:
- Empty streamType panics at registration
- Nil extractor panics at registration
- Empty streamID returns error at send time
- Special chars in stream type/ID (unicode, slashes, null bytes)
- Composite key isolation (same ID, different types)
- Concurrent writes to different streams
- Version conflicts with HintNewStream
- Worker key isolation across stream types
fix: update all examples and tests for stream_type refactor
Some checks failed
CI / test-pgstore (push) Failing after 6s
CI / test-nats (push) Failing after 5s
CI / test-codec-otelkit (push) Failing after 10s
CI / benchmarks (push) Failing after 4s
CI / test-sqlitestore (push) Failing after 27s
CI / test-core (push) Failing after 1m27s
CI / test-integration (push) Failing after 1m30s
CI / test-pgstore (pull_request) Failing after 7s
CI / test-nats (pull_request) Failing after 6s
CI / test-codec-otelkit (pull_request) Failing after 9s
CI / benchmarks (pull_request) Failing after 4s
CI / test-sqlitestore (pull_request) Failing after 29s
CI / test-core (pull_request) Successful in 1m24s
CI / test-integration (pull_request) Failing after 1m29s
6a36a828ae
- Update command.Register calls with streamType and streamID extractor
- Remove 'order-'/'account-' prefix patterns from StreamID usage
- StreamID is now the pure business ID (projections, automations, tests)
- Fix sqlitestore test files for two-arg Load/Archive/Restore/AppendWithOptions API
- Fix multicodec_test.go and store_comprehensive_test.go signatures
- All examples compile and test green

Refs #191
einar merged commit 196a8fe6ed into main 2026-03-06 15:29:06 +00:00
Sign in to join this conversation.
No reviewers
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.

Dependencies

No dependencies set.

Reference
ash/eskit!192
No description provided.