Skip to content

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.
This commit includes more updates to the event sourced invite flow.

The sign in code was updated to use form data rather than json.
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.

2 participants