sagas 0.0.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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