sagas 0.0.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sagas.rb +5 -37
  3. metadata +34 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7d1b0a7de8d98eb05918ae254aa862fc2dbbbd18e57ee21c5ad6cbf36843bbe
4
- data.tar.gz: c71877d2c7f61aaec3ee3d07c258a40e0f1cc551208ebd5209735762355a4137
3
+ metadata.gz: 67e79d8b60ebf2521c85555a7fbf01c0f7fd2d89cf7398b7cf3305835d89f0d9
4
+ data.tar.gz: 158f6ce25b8f2225ebeddf4abc607116f29b4fa2e533971e76975f8b30a69b64
5
5
  SHA512:
6
- metadata.gz: 79110b2937f320d832c3c5c8ec90dc6ad0af734facef8974db0f699b1c5c3f3a0bc65be1f7d8e0684de27fb62df627c44ab6611f1236ea90afa2ad1773992951
7
- data.tar.gz: 212d3f49078cac79b7c78aae6e400488115f57ad7f79f8c511cf1ce6cccae5e81e5312f0a92e646c501822c301370123a145137d014cd29ca0e6244ba214ed9e
6
+ metadata.gz: bef302f7d48a3f564cdcb00ce430364ef1abb025b5dd1e734773781d662482433433009ec163f8917cbf3b486bb624a100b9507e53d0d773bdf59437e5f9e2f4
7
+ data.tar.gz: bc0b0cd690aa1c960a01a215e99347c83b393677c0a7ad01417ea0f024f08a2ef22cd47830a28c24b9e0a3f12972acd443cd1a4ba0829b2fa16956c53dae85c6
@@ -1,40 +1,8 @@
1
- class Effect
2
- attr_reader :name, :perform, :undo
3
- attr_accessor :side_effect
1
+ module Sagas
2
+ require 'sagas/transaction'
3
+ require 'sagas/command'
4
4
 
5
- def initialize(name:, perform:, undo:)
6
- @name = name
7
- @perform = perform
8
- @undo = undo
5
+ def self.transaction
6
+ Sagas::Transaction.new
9
7
  end
10
8
  end
11
-
12
- class Saga
13
- def initialize
14
- @effects = []
15
- # Can be :abort, :error, or :ok
16
- @transaction_state = :ok
17
- end
18
-
19
- def self.transaction(&block)
20
- block.call(Saga.new)
21
- end
22
-
23
- def run(name:, perform:, undo:)
24
- add_stage(name: name, perform: perform, undo: undo)
25
- execute_stage if @transaction_state == :ok
26
- end
27
-
28
- def add_stage(name:, perform:, undo:)
29
- @effects.push(Effect.new(name: name, perform: perform, undo: undo))
30
- end
31
-
32
- def execute_stage
33
- @effects.last.side_effect = @effects.last.perform.call()
34
- rescue => e
35
- @transaction_state = :abort
36
- @effects.reverse_each do |effect|
37
- effect.undo.call(effect.side_effect)
38
- end
39
- end
40
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sagas
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Yu
@@ -9,22 +9,50 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-11-30 00:00:00.000000000 Z
12
+ date: 2018-12-21 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: simplecov
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: pry-byebug
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
14
42
  - !ruby/object:Gem::Dependency
15
43
  name: bundler
16
44
  requirement: !ruby/object:Gem::Requirement
17
45
  requirements:
18
- - - "~>"
46
+ - - ">="
19
47
  - !ruby/object:Gem::Version
20
- version: '1.16'
48
+ version: '0'
21
49
  type: :development
22
50
  prerelease: false
23
51
  version_requirements: !ruby/object:Gem::Requirement
24
52
  requirements:
25
- - - "~>"
53
+ - - ">="
26
54
  - !ruby/object:Gem::Version
27
- version: '1.16'
55
+ version: '0'
28
56
  - !ruby/object:Gem::Dependency
29
57
  name: rake
30
58
  requirement: !ruby/object:Gem::Requirement