# Projections
An entity's data comes from the events recorded in the entity's event stream as a result of handlers handling commands and other events.
A projection is the glue between an event stream and an entity.
The projection receives events as inputs, and modifies the state of an entity based on which event is being processed, and the content of the event.
When an entity is "retrieved", events from its event stream are applied to it by the entity projection.
# Example Projection
class Projection
include EntityProjection
entity_name :account
apply Deposited do |deposited|
account.id = deposited.account_id
amount = deposited.amount
account.deposit(amount)
end
apply Withdrawn do |withdrawn|
account.id = withdrawn.account_id
amount = withdrawn.amount
account.withdraw(amount)
end
end