phobos_db_checkpoint 2.2.0 → 2.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +4 -0
- data/lib/phobos_db_checkpoint/cli.rb +24 -4
- data/lib/phobos_db_checkpoint/event.rb +4 -0
- data/lib/phobos_db_checkpoint/events_api.rb +2 -2
- data/lib/phobos_db_checkpoint/failure.rb +4 -0
- data/lib/phobos_db_checkpoint/tasks.rb +0 -1
- data/lib/phobos_db_checkpoint/version.rb +1 -1
- data/templates/migrate/phobos_01_create_events.rb.erb +1 -1
- data/templates/migrate/phobos_02_create_failures.rb.erb +2 -2
- data/templates/migrate/phobos_03_add_created_at_to_events.rb.erb +38 -0
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bded9e44c71ab913e667bd410909c32349a80d95
|
|
4
|
+
data.tar.gz: bbe38ca65038fd8fe9c768d6b5a2342b6498cf8d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dc3d96c808dfaabd944eeb5851dd57b5e62bf386f78897d885df524d908e3d94cf9bb72999e93899571043d804338737b95d5acbb9503d3e318c438c1f441e2d
|
|
7
|
+
data.tar.gz: 5a2d60b0c1e9ef12eb57072f0013b0af5e74eac4a32a64fb75018abd302ecfda0b62a95d56b1dded8456f7263694186e72d38de66316b37a900141af0d986028
|
data/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
|
6
6
|
|
|
7
|
+
## 2.3.0 (2017-03-08)
|
|
8
|
+
|
|
9
|
+
- [enhancement] Add created_at to events table
|
|
10
|
+
|
|
7
11
|
## 2.2.0 (2017-03-08)
|
|
8
12
|
|
|
9
13
|
- [enhancement] Add delete failure end point
|
data/README.md
CHANGED
|
@@ -299,6 +299,10 @@ The following payload is included for all notifications:
|
|
|
299
299
|
|
|
300
300
|
## <a name="upgrading"></a> Upgrading
|
|
301
301
|
|
|
302
|
+
#### From 2.2.0 >= _version_ >= 2.0.0 to 2.3.0
|
|
303
|
+
|
|
304
|
+
The database table for Event has had created_at added to it, run `phobos_db_checkpoint copy-migrations` in your project to receive the migration.
|
|
305
|
+
|
|
302
306
|
#### From <2.0 to 2.x
|
|
303
307
|
|
|
304
308
|
##### Rename database tables
|
|
@@ -34,23 +34,35 @@ module PhobosDBCheckpoint
|
|
|
34
34
|
aliases: ['-d'],
|
|
35
35
|
default: 'db/migrate',
|
|
36
36
|
banner: 'Destination folder relative to your project'
|
|
37
|
+
option :config,
|
|
38
|
+
aliases: ['-c'],
|
|
39
|
+
default: 'config/database.yml',
|
|
40
|
+
banner: 'Database configuration relative to your project'
|
|
37
41
|
def copy_migrations
|
|
42
|
+
if options[:config]
|
|
43
|
+
ENV['DB_CONFIG'] = options[:config]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
unless active_connection?
|
|
47
|
+
PhobosDBCheckpoint.configure(pool_size: 1)
|
|
48
|
+
end
|
|
49
|
+
|
|
38
50
|
destination_fullpath = File.join(destination_root, options[:destination])
|
|
39
51
|
generated_migrations = list_migrations(destination_fullpath)
|
|
40
52
|
FileUtils.mkdir_p(destination_fullpath)
|
|
41
|
-
|
|
53
|
+
file_path = nil
|
|
42
54
|
template_migrations_metadata.each do |metadata|
|
|
43
|
-
|
|
44
55
|
if migration_exists?(generated_migrations, metadata[:name])
|
|
45
56
|
say_status('exists', metadata[:name])
|
|
46
|
-
|
|
47
57
|
else
|
|
48
58
|
file_path = File.join(options[:destination], "#{metadata[:number]}_#{metadata[:name]}")
|
|
49
59
|
template_path = File.join('templates/migrate', metadata[:path])
|
|
50
60
|
template(template_path, file_path)
|
|
51
61
|
end
|
|
52
|
-
|
|
53
62
|
end
|
|
63
|
+
rescue
|
|
64
|
+
FileUtils.rm_f(file_path.to_s)
|
|
65
|
+
raise
|
|
54
66
|
end
|
|
55
67
|
|
|
56
68
|
desc 'migration NAME', 'Generates a new migration with the given name. Use underlines (_) as a separator, ex: add_new_column'
|
|
@@ -117,6 +129,14 @@ module PhobosDBCheckpoint
|
|
|
117
129
|
def new_migration_template
|
|
118
130
|
File.join(self.class.source_root, 'templates/new_migration.rb.erb')
|
|
119
131
|
end
|
|
132
|
+
|
|
133
|
+
def active_connection?
|
|
134
|
+
ActiveRecord::Base
|
|
135
|
+
.connection_pool
|
|
136
|
+
.with_connection { |con| con.active? }
|
|
137
|
+
rescue
|
|
138
|
+
false
|
|
139
|
+
end
|
|
120
140
|
end
|
|
121
141
|
end
|
|
122
142
|
end
|
|
@@ -3,6 +3,10 @@ module PhobosDBCheckpoint
|
|
|
3
3
|
include PhobosDBCheckpoint::EventHelper
|
|
4
4
|
after_initialize :assign_checksum
|
|
5
5
|
|
|
6
|
+
scope :order_by_event_time_and_created_at, -> {
|
|
7
|
+
order('event_time desc nulls last', 'created_at desc nulls last')
|
|
8
|
+
}
|
|
9
|
+
|
|
6
10
|
def exists?
|
|
7
11
|
Event.where(topic: topic, group_id: group_id, checksum: checksum).exists?
|
|
8
12
|
end
|
|
@@ -75,7 +75,7 @@ module PhobosDBCheckpoint
|
|
|
75
75
|
query = query.where(event_type: params['event_type']) if params['event_type']
|
|
76
76
|
|
|
77
77
|
query
|
|
78
|
-
.
|
|
78
|
+
.order_by_event_time_and_created_at
|
|
79
79
|
.limit(limit)
|
|
80
80
|
.offset(offset)
|
|
81
81
|
.to_json
|
|
@@ -94,7 +94,7 @@ module PhobosDBCheckpoint
|
|
|
94
94
|
query = query.where(event_type: params['event_type']) if params['event_type']
|
|
95
95
|
|
|
96
96
|
query
|
|
97
|
-
.
|
|
97
|
+
.order_by_event_time_and_created_at
|
|
98
98
|
.limit(limit)
|
|
99
99
|
.offset(offset)
|
|
100
100
|
.to_json
|
|
@@ -2,6 +2,10 @@ module PhobosDBCheckpoint
|
|
|
2
2
|
class Failure < ActiveRecord::Base
|
|
3
3
|
include PhobosDBCheckpoint::EventHelper
|
|
4
4
|
|
|
5
|
+
scope :order_by_event_time_and_created_at, -> {
|
|
6
|
+
order('event_time desc nulls last', 'created_at desc nulls last')
|
|
7
|
+
}
|
|
8
|
+
|
|
5
9
|
def self.record(event:, event_metadata:, exception: nil)
|
|
6
10
|
return if exists?(event_metadata[:checksum])
|
|
7
11
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class Phobos01CreateEvents < ActiveRecord::Migration[<%= ActiveRecord::
|
|
1
|
+
class Phobos01CreateEvents < ActiveRecord::Migration[<%= ActiveRecord::VERSION::STRING.to_f %>]
|
|
2
2
|
def up
|
|
3
3
|
create_table :phobos_db_checkpoint_events do |t|
|
|
4
4
|
t.string :topic, index: true
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
class Phobos02CreateFailures < ActiveRecord::Migration[<%= ActiveRecord::
|
|
1
|
+
class Phobos02CreateFailures < ActiveRecord::Migration[<%= ActiveRecord::VERSION::STRING.to_f %>]
|
|
2
2
|
def up
|
|
3
3
|
create_table :phobos_db_checkpoint_failures do |t|
|
|
4
|
-
t.timestamp :created_at, index:
|
|
4
|
+
t.timestamp :created_at, index: true
|
|
5
5
|
t.string :topic, index: true
|
|
6
6
|
t.string :group_id, index: true
|
|
7
7
|
t.string :entity_id, index: true
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
class Phobos03AddCreatedAtToEvents < ActiveRecord::Migration[<%= ActiveRecord::VERSION::STRING.to_f %>]
|
|
2
|
+
def up
|
|
3
|
+
add_column :phobos_db_checkpoint_events, :created_at, :datetime
|
|
4
|
+
|
|
5
|
+
add_index :phobos_db_checkpoint_events,
|
|
6
|
+
[:event_time],
|
|
7
|
+
name: :phobos_events_event_time_desc_nulls_last_idx,
|
|
8
|
+
order: {event_time: 'desc nulls last'},
|
|
9
|
+
using: :btree
|
|
10
|
+
|
|
11
|
+
add_index :phobos_db_checkpoint_events,
|
|
12
|
+
[:created_at],
|
|
13
|
+
name: :phobos_events_created_at_desc_nulls_last_idx,
|
|
14
|
+
order: {created_at: 'desc nulls last'},
|
|
15
|
+
using: :btree
|
|
16
|
+
|
|
17
|
+
add_index :phobos_db_checkpoint_failures,
|
|
18
|
+
[:event_time],
|
|
19
|
+
name: :phobos_failures_event_time_desc_nulls_last_idx,
|
|
20
|
+
order: {event_time: 'desc nulls last'},
|
|
21
|
+
using: :btree
|
|
22
|
+
|
|
23
|
+
add_index :phobos_db_checkpoint_failures,
|
|
24
|
+
[:created_at],
|
|
25
|
+
name: :phobos_failures_created_at_desc_nulls_last_idx,
|
|
26
|
+
order: {created_at: 'desc nulls last'},
|
|
27
|
+
using: :btree
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def down
|
|
31
|
+
remove_index :phobos_db_checkpoint_events, name: :phobos_events_event_time_desc_nulls_last_idx
|
|
32
|
+
remove_index :phobos_db_checkpoint_events, name: :phobos_events_created_at_desc_nulls_last_idx
|
|
33
|
+
remove_index :phobos_db_checkpoint_failures, name: :phobos_failures_event_time_desc_nulls_last_idx
|
|
34
|
+
remove_index :phobos_db_checkpoint_failures, name: :phobos_failures_created_at_desc_nulls_last_idx
|
|
35
|
+
|
|
36
|
+
remove_column :phobos_db_checkpoint_events, :created_at
|
|
37
|
+
end
|
|
38
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: phobos_db_checkpoint
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Túlio Ornelas
|
|
@@ -13,7 +13,7 @@ authors:
|
|
|
13
13
|
autorequire:
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
|
-
date: 2017-03-
|
|
16
|
+
date: 2017-03-09 00:00:00.000000000 Z
|
|
17
17
|
dependencies:
|
|
18
18
|
- !ruby/object:Gem::Dependency
|
|
19
19
|
name: bundler
|
|
@@ -269,6 +269,7 @@ files:
|
|
|
269
269
|
- templates/database.yml.example
|
|
270
270
|
- templates/migrate/phobos_01_create_events.rb.erb
|
|
271
271
|
- templates/migrate/phobos_02_create_failures.rb.erb
|
|
272
|
+
- templates/migrate/phobos_03_add_created_at_to_events.rb.erb
|
|
272
273
|
- templates/new_migration.rb.erb
|
|
273
274
|
- templates/phobos_boot.rb
|
|
274
275
|
homepage: https://github.com/klarna/phobos_db_checkpoint
|
|
@@ -292,7 +293,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
292
293
|
version: '0'
|
|
293
294
|
requirements: []
|
|
294
295
|
rubyforge_project:
|
|
295
|
-
rubygems_version: 2.
|
|
296
|
+
rubygems_version: 2.5.1
|
|
296
297
|
signing_key:
|
|
297
298
|
specification_version: 4
|
|
298
299
|
summary: Phobos DB Checkpoint is a plugin to Phobos and is meant as a drop in replacement
|