sequent 2.1.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sequent +65 -0
  3. data/db/sequent_schema.rb +9 -8
  4. data/lib/sequent.rb +3 -0
  5. data/lib/sequent/configuration.rb +67 -0
  6. data/lib/sequent/core/aggregate_repository.rb +1 -1
  7. data/lib/sequent/core/core.rb +2 -2
  8. data/lib/sequent/core/event_store.rb +2 -2
  9. data/lib/sequent/core/helpers/attribute_support.rb +3 -0
  10. data/lib/sequent/core/helpers/self_applier.rb +1 -1
  11. data/lib/sequent/core/{record_sessions/active_record_session.rb → persistors/active_record_persistor.rb} +21 -19
  12. data/lib/sequent/core/persistors/persistor.rb +84 -0
  13. data/lib/sequent/core/persistors/persistors.rb +3 -0
  14. data/lib/sequent/core/{record_sessions/replay_events_session.rb → persistors/replay_optimized_postgres_persistor.rb} +16 -7
  15. data/lib/sequent/core/projector.rb +96 -0
  16. data/lib/sequent/generator.rb +2 -0
  17. data/lib/sequent/generator/aggregate.rb +71 -0
  18. data/lib/sequent/generator/project.rb +61 -0
  19. data/lib/sequent/generator/template_aggregate/template_aggregate.rb +4 -0
  20. data/lib/sequent/generator/template_aggregate/template_aggregate/commands.rb +2 -0
  21. data/lib/sequent/generator/template_aggregate/template_aggregate/events.rb +2 -0
  22. data/lib/sequent/generator/template_aggregate/template_aggregate/template_aggregate.rb +9 -0
  23. data/lib/sequent/generator/template_aggregate/template_aggregate/template_aggregate_command_handler.rb +5 -0
  24. data/lib/sequent/generator/template_project/Gemfile +11 -0
  25. data/lib/sequent/generator/template_project/Gemfile.lock +72 -0
  26. data/lib/sequent/generator/template_project/Rakefile +12 -0
  27. data/lib/sequent/generator/template_project/app/projectors/post_projector.rb +22 -0
  28. data/lib/sequent/generator/template_project/app/records/post_record.rb +2 -0
  29. data/lib/sequent/generator/template_project/config/initializers/sequent.rb +13 -0
  30. data/lib/sequent/generator/template_project/db/database.yml +17 -0
  31. data/lib/sequent/generator/template_project/db/migrations.rb +17 -0
  32. data/lib/sequent/generator/template_project/db/sequent_schema.rb +51 -0
  33. data/lib/sequent/generator/template_project/db/tables/post_records.sql +10 -0
  34. data/lib/sequent/generator/template_project/lib/post.rb +4 -0
  35. data/lib/sequent/generator/template_project/lib/post/commands.rb +4 -0
  36. data/lib/sequent/generator/template_project/lib/post/events.rb +14 -0
  37. data/lib/sequent/generator/template_project/lib/post/post.rb +24 -0
  38. data/lib/sequent/generator/template_project/lib/post/post_command_handler.rb +5 -0
  39. data/lib/sequent/generator/template_project/my_app.rb +11 -0
  40. data/lib/sequent/generator/template_project/spec/app/projectors/post_projector_spec.rb +32 -0
  41. data/lib/sequent/generator/template_project/spec/lib/post/post_command_handler_spec.rb +20 -0
  42. data/lib/sequent/generator/template_project/spec/spec_helper.rb +29 -0
  43. data/lib/sequent/migrations/migrate_events.rb +1 -0
  44. data/lib/sequent/migrations/migrations.rb +2 -0
  45. data/lib/sequent/migrations/projectors.rb +18 -0
  46. data/lib/sequent/migrations/view_schema.rb +364 -0
  47. data/lib/sequent/rake/migration_tasks.rb +109 -0
  48. data/lib/sequent/rake/tasks.rb +16 -0
  49. data/lib/sequent/sequent.rb +53 -13
  50. data/lib/sequent/support/database.rb +53 -8
  51. data/lib/sequent/util/printer.rb +16 -0
  52. data/lib/sequent/util/timer.rb +14 -0
  53. data/lib/sequent/util/util.rb +2 -0
  54. data/lib/version.rb +1 -1
  55. metadata +67 -14
  56. data/lib/sequent/core/base_event_handler.rb +0 -54
  57. data/lib/sequent/core/record_sessions/record_sessions.rb +0 -2
@@ -1,54 +0,0 @@
1
- require_relative 'helpers/self_applier'
2
-
3
- module Sequent
4
- module Core
5
- # EventHandlers listen to events and handle them according to their responsibility.
6
- #
7
- # Examples:
8
- # * Updating view states
9
- # * Sending emails
10
- # * Executing other commands based on events (chainging)
11
- #
12
- # Example of updating view state, in this case the InvoiceRecord table representing an Invoice
13
- #
14
- # class InvoiceCommandHandler < Sequent::Core::BaseCommandHandler
15
- # on CreateInvoiceCommand do |command|
16
- # create_record(
17
- # InvoiceRecord,
18
- # recipient: command.recipient,
19
- # amount: command.amount
20
- # )
21
- # end
22
- # end
23
- #
24
- # Please note that the actual storage is abstracted away in the +record_session+. Reason
25
- # is when replaying the entire event_store our default choice, active_record, is too slow.
26
- # Also we want to give the opportunity to use other storage mechanisms for the view state.
27
- # See the +def_delegators+ which method to implement.
28
- # Due to this abstraction you can not traverse into child objects when using ActiveRecord
29
- # like you are used to:
30
- #
31
- # invoice_record.line_item_records << create_record(LineItemRecord, ...)
32
- #
33
- # In this case you should simply do:
34
- #
35
- # create_record(LineItemRecord, invoice_id: invoice_record.aggregate_id)
36
- #
37
- class BaseEventHandler
38
- extend Forwardable
39
- include Helpers::SelfApplier
40
-
41
- def initialize(record_session = Sequent::Core::RecordSessions::ActiveRecordSession.new)
42
- @record_session = record_session
43
- end
44
-
45
- def_delegators :@record_session, :update_record, :create_record, :create_records, :create_or_update_record, :get_record!, :get_record,
46
- :delete_all_records, :update_all_records, :do_with_records, :do_with_record, :delete_record,
47
- :find_records, :last_record, :execute
48
-
49
- end
50
-
51
- # Alias the above class
52
- Projector = BaseEventHandler
53
- end
54
- end
@@ -1,2 +0,0 @@
1
- require_relative 'active_record_session'
2
- require_relative 'replay_events_session'