emailbutler 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/db/migrate/{20220908180903_create_emailbutler_tables.rb → 20220916162720_create_emailbutler_tables.rb} +3 -8
- data/lib/emailbutler/adapters/active_record.rb +8 -16
- data/lib/emailbutler/dsl.rb +3 -3
- data/lib/emailbutler/version.rb +1 -1
- data/lib/emailbutler/webhooks/receiver.rb +1 -1
- data/lib/emailbutler.rb +1 -1
- data/lib/generators/emailbutler/templates/migration.erb +3 -8
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 86c998b3d9e29ae064f2b2881b392661d785534883a28f40cb7fd5e846e5cf69
|
4
|
+
data.tar.gz: 4952983e5fc06ea2e90f2d2504d66d6c7ea083281796d30b7e71154096235e1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eedddd11e3d27324ceeb712c3f9821ede81fe3a02970166c6d7c67b546333ffdd8ce5ffc9cf885879a8020c966233c6aa51088d683546dda472645156f77c3d2
|
7
|
+
data.tar.gz: da1e97498ff6853525d05a8cfe988aef95cccd3b82e39803c966218945904a45c2830b17bd3a5eea5a728b02eb0e47faf0e4d3b9fdd2e503c87423f3d816df6d
|
@@ -9,20 +9,15 @@ class CreateEmailbutlerTables < ActiveRecord::Migration[7.0]
|
|
9
9
|
t.string :action, null: false
|
10
10
|
t.jsonb :params, null: false, default: {}
|
11
11
|
t.string :send_to, array: true
|
12
|
-
t.
|
13
|
-
end
|
14
|
-
add_index :emailbutler_messages, :uuid, unique: true
|
15
|
-
|
16
|
-
create_table :emailbutler_events do |t|
|
17
|
-
t.integer :emailbutler_message_id, null: false, index: true
|
18
|
-
t.integer :status, null: false
|
12
|
+
t.integer :status, null: false, default: 0
|
19
13
|
t.datetime :timestamp
|
14
|
+
t.integer :lock_version
|
20
15
|
t.timestamps
|
21
16
|
end
|
17
|
+
add_index :emailbutler_messages, :uuid, unique: true
|
22
18
|
end
|
23
19
|
|
24
20
|
def self.down
|
25
21
|
drop_table :emailbutler_messages
|
26
|
-
drop_table :emailbutler_events
|
27
22
|
end
|
28
23
|
end
|
@@ -13,15 +13,13 @@ module Emailbutler
|
|
13
13
|
class Emailbutler::Message < Model
|
14
14
|
self.table_name = :emailbutler_messages
|
15
15
|
|
16
|
+
CREATED = 'created'
|
16
17
|
REJECTED = 'rejected'
|
17
18
|
PROCESSED = 'processed'
|
18
19
|
FAILED = 'failed'
|
19
20
|
DELIVERED = 'delivered'
|
20
21
|
|
21
|
-
|
22
|
-
class_name: 'Emailbutler::Event', dependent: :destroy, foreign_key: :emailbutler_message_id
|
23
|
-
|
24
|
-
enum status: { REJECTED => 0, PROCESSED => 1, FAILED => 2, DELIVERED => 3 }
|
22
|
+
enum status: { CREATED => 0, REJECTED => 1, PROCESSED => 2, FAILED => 3, DELIVERED => 4 }
|
25
23
|
|
26
24
|
after_initialize :generate_uuid
|
27
25
|
|
@@ -32,24 +30,16 @@ module Emailbutler
|
|
32
30
|
end
|
33
31
|
end
|
34
32
|
|
35
|
-
class Emailbutler::Event < Model
|
36
|
-
self.table_name = :emailbutler_events
|
37
|
-
|
38
|
-
belongs_to :emailbutler_message, class_name: 'Emailbutler::Message'
|
39
|
-
end
|
40
|
-
|
41
33
|
# Public: The name of the adapter.
|
42
|
-
attr_reader :name, :message_class
|
34
|
+
attr_reader :name, :message_class
|
43
35
|
|
44
36
|
# Public: Initialize a new ActiveRecord adapter instance.
|
45
37
|
#
|
46
38
|
# name - The Symbol name for this adapter. Optional (default :active_record)
|
47
39
|
# message_class - The AR class responsible for the messages table.
|
48
|
-
# event_class - The AR class responsible for the messages events table.
|
49
40
|
def initialize(options={})
|
50
41
|
@name = options.fetch(:name, :active_record)
|
51
42
|
@message_class = options.fetch(:message_class) { Emailbutler::Message }
|
52
|
-
@event_class = options.fetch(:event_class) { Emailbutler::Event }
|
53
43
|
end
|
54
44
|
|
55
45
|
# Public: Builds a message.
|
@@ -72,9 +62,11 @@ module Emailbutler
|
|
72
62
|
@message_class.find_by(args)
|
73
63
|
end
|
74
64
|
|
75
|
-
# Public:
|
76
|
-
def
|
77
|
-
|
65
|
+
# Public: Updates the message.
|
66
|
+
def update_message(message, args={})
|
67
|
+
message.update(args) if message.timestamp.nil? || args[:timestamp] > message.timestamp
|
68
|
+
rescue ::ActiveRecord::StaleObjectError
|
69
|
+
update_message(message.reload, args)
|
78
70
|
end
|
79
71
|
end
|
80
72
|
end
|
data/lib/emailbutler/dsl.rb
CHANGED
@@ -31,9 +31,9 @@ module Emailbutler
|
|
31
31
|
adapter.find_message_by(args)
|
32
32
|
end
|
33
33
|
|
34
|
-
# Public:
|
35
|
-
def
|
36
|
-
adapter.
|
34
|
+
# Public: Updates the message.
|
35
|
+
def update_message(message, args={})
|
36
|
+
adapter.update_message(message, args)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
data/lib/emailbutler/version.rb
CHANGED
data/lib/emailbutler.rb
CHANGED
@@ -42,5 +42,5 @@ module Emailbutler
|
|
42
42
|
# Public: All the methods delegated to instance. These should match the interface of Emailbutler::DSL.
|
43
43
|
def_delegators :instance,
|
44
44
|
:adapter, :build_message, :set_message_attribute, :save_message, :find_message_by,
|
45
|
-
:
|
45
|
+
:update_message
|
46
46
|
end
|
@@ -9,20 +9,15 @@ class CreateEmailbutlerTables < ActiveRecord::Migration<%= migration_version %>
|
|
9
9
|
t.string :action, null: false
|
10
10
|
t.jsonb :params, null: false, default: {}
|
11
11
|
t.string :send_to, array: true
|
12
|
-
t.
|
13
|
-
end
|
14
|
-
add_index :emailbutler_messages, :uuid, unique: true
|
15
|
-
|
16
|
-
create_table :emailbutler_events do |t|
|
17
|
-
t.integer :emailbutler_message_id, null: false, index: true
|
18
|
-
t.integer :status, null: false
|
12
|
+
t.integer :status, null: false, default: 0
|
19
13
|
t.datetime :timestamp
|
14
|
+
t.integer :lock_version
|
20
15
|
t.timestamps
|
21
16
|
end
|
17
|
+
add_index :emailbutler_messages, :uuid, unique: true
|
22
18
|
end
|
23
19
|
|
24
20
|
def self.down
|
25
21
|
drop_table :emailbutler_messages
|
26
|
-
drop_table :emailbutler_events
|
27
22
|
end
|
28
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emailbutler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bogdanov Anton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-09-
|
11
|
+
date: 2022-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -166,7 +166,7 @@ files:
|
|
166
166
|
- app/controllers/emailbutler/webhooks_controller.rb
|
167
167
|
- app/views/layouts/emailbutler/application.html.erb
|
168
168
|
- config/routes.rb
|
169
|
-
- db/migrate/
|
169
|
+
- db/migrate/20220916162720_create_emailbutler_tables.rb
|
170
170
|
- lib/emailbutler.rb
|
171
171
|
- lib/emailbutler/adapters/active_record.rb
|
172
172
|
- lib/emailbutler/configuration.rb
|