Open badenkov opened 6 years ago
Hello! Yep, I forgot to create issue for this but in future we want to use types for each event and use it like this:
events = Hanami::Events.initialize(:memory_sync)
events.subscribe('user.created') do |event_data|
event_data # => object
end
Thanks for this issue! 👍
It's a good news:)
Maybe would better:
module Events
class UserCreated < Dry::Struct
attribute :user_id, Types::UUID
attribute :first_name, Types::String
attribute :first_name, Types::String
end
end
events.subscribe(Events::UserCreated) do |event_data|
event_data # => object
end
What do you think?
so, I thought about something like this:
class Users::Events::PasswordChanged < Hanami::Event::Type
event_name 'user.password_changed'
attribute :user_id, Types::UUID
attribute :password, Types::String
end
password_changed = Users::Events::PasswordChanged.new(payload)
events.broadcast(password_changed)
events.subscribe(Users::Events::PasswordChanged) do |object|
object # => Users::Events::PasswordChanged
end
But it's just a idea now.
Maybe we found better (from code and developer API) way how to build it ¯\_(ツ)_/¯
That looks good. I liked it. Thanks for answers!
Hello!
I found interesting example in presentation of Nikita Shilnikov
What do you think to use Dry::Struct for events?
IMHO it will make an application (where you will use events) more clear, we will see all possible events, and that events will have guaranteed shape.