Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Event Sourcing Event Store #822

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from
Draft

Event Sourcing Event Store #822

wants to merge 7 commits into from

Conversation

paulespinosa
Copy link
Member

What changes did you make?

  • Implemented an in-memory Event Store
  • Implemented rudimentary Invite features with tests as an example implementation of Event Sourcing.

Rationale behind the changes?

  • Event sourcing can enable audit logging, deep domain insight, time traveling, optimistic concurrency

Testing done for these changes

  • Unit tests are included

What did you learn or can share that is new?(optional)

  • There are various ways to implement an Event Store. This is just one of many possible implementations.
  • There are many ways to implement Event Sourced objects. This is just one of many possible implementations.

The Event Store can be implemented in this Python module.
A basic in-memory event store along with example Invite features.
Starting to see what it looks like to represent domain concepts in the commands
and events. Instead of using string for every value, use a domain concept to
represent the value types.
This commit includes an example of a "Value Object" named EmailAddress.
It represents a valid email address. Consumers of this object can expect that
the object is valid according to the data it contains such that the consumer
does not have to check if the email is valid.

An implementation of a SQLAlchemy-backed Event Store was also added along with a
unit test using a SQLite in-memory.

The Invite flow spec and code has been updated to include the idea of an invite
that is pending to be sent.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant