sample_data_dump 0.0.1 → 0.0.2
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/.gitignore +2 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/README.md +62 -4
- data/lib/sample_data_dump/commands/decompress_and_load_sample_data_dumps.rb +43 -0
- data/lib/sample_data_dump/commands/download_compressed_sample_data_dumps.rb +31 -0
- data/lib/sample_data_dump/commands/dump_sample_data_to_files_and_compress.rb +39 -0
- data/lib/sample_data_dump/commands/upload_compressed_sample_data_dumps.rb +29 -0
- data/lib/sample_data_dump/entities/settings.rb +13 -0
- data/lib/sample_data_dump/gateways/local_file_system.rb +83 -0
- data/lib/sample_data_dump/helpers/dump_file.rb +35 -0
- data/lib/sample_data_dump/interfaces/compressed_dump_storage_gateway.rb +19 -0
- data/lib/sample_data_dump/interfaces/{persistence.rb → data_store_gateway.rb} +2 -18
- data/lib/sample_data_dump/interfaces/local_file_system_gateway.rb +27 -0
- data/lib/sample_data_dump/version.rb +1 -1
- metadata +12 -8
- data/.rspec_status +0 -9
- data/lib/sample_data_dump/use_cases/actor_downloads_sample_data_files.rb +0 -34
- data/lib/sample_data_dump/use_cases/actor_dumps_sample_data_to_files.rb +0 -34
- data/lib/sample_data_dump/use_cases/actor_loads_sample_data_files.rb +0 -42
- data/lib/sample_data_dump/use_cases/actor_uploads_sample_data_files.rb +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42b460018084e41b910908bbafb017a58f4cd918
|
4
|
+
data.tar.gz: e09b53a900e7859880eb521d30b459e33d7b33c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04f4391e631cb33f8fe5e9c7d443d8ad65ab2d9e89a274477cb8bcb9af178de192e970872a6f1f7c03337453894fde2e56b0b82811c588ad7295060f5afb4f50
|
7
|
+
data.tar.gz: 2ec63119a0593f6285da5569762a4011cd3742d8add99f0b0070d64131d60caddd752fcb28ddc85f083326fe69f314cd55a4cc7d07e73d0b180a4e03f4de0265
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -6,12 +6,70 @@ This gem provides:
|
|
6
6
|
|
7
7
|
## Usage
|
8
8
|
|
9
|
-
1. Create a class that implements the
|
10
|
-
2.
|
11
|
-
3.
|
9
|
+
1. Create a class that implements the CompressedDumpStorageGateway interface.
|
10
|
+
2. Create a class that implements the DataStoreGateway interface.
|
11
|
+
3. Initialize your gateway classes and a Settings class.
|
12
|
+
4. Pass the gateways and settings to the appropriate command.
|
13
|
+
5. Use the result to take your next action.
|
12
14
|
|
13
15
|
```
|
14
|
-
SampleDataDump::
|
16
|
+
settings = SampleDataDump::Settings.new(
|
17
|
+
compacted_dump_directory: '/tmp/compacted_dumps',
|
18
|
+
config_file_path: 'config/sample_data_dump.yml'
|
19
|
+
)
|
20
|
+
local_file_system = SampleDataDump::Gateways::LocalFileSystem.new(settings)
|
21
|
+
s3_storage = AmazonS3CompressedDumpStorageGateway.new(my_amazon_settings)
|
22
|
+
postgres_db = PostgresDataStoreGateway.new(my_postgres_settings)
|
23
|
+
|
24
|
+
SampleDataDump::Commands::DownloadCompressedDataDumps.new(local_file_system, s3_storage, settings).result.bind do
|
25
|
+
SampleDataDump::Commands::DecompressAndLoadSampleDataDumps.new(local_file_system, postgres_db, settings).result
|
26
|
+
end
|
27
|
+
```
|
28
|
+
|
29
|
+
Some useful source code for creating rake tasks:
|
30
|
+
|
31
|
+
```
|
32
|
+
namespace :sample_data do
|
33
|
+
desc 'dumps sample data to files'
|
34
|
+
task dump: :environment do
|
35
|
+
settings = SampleDataDump::Entities::Settings.new
|
36
|
+
local_file_system = SampleDataDump::Gateways::LocalFileSystem.new(settings)
|
37
|
+
data_store = MySampleDataDumpDataStore::Gateway.new(ActiveRecord::Base.connection, settings)
|
38
|
+
command = SampleDataDump::Commands::DumpSampleDataToFilesAndCompress.new(local_file_system, data_store)
|
39
|
+
result = command.result
|
40
|
+
puts result.failure if result.failure?
|
41
|
+
end
|
42
|
+
|
43
|
+
desc 'uploads compressed sample data files to storage'
|
44
|
+
task upload: :environment do
|
45
|
+
settings = SampleDataDump::Entities::Settings.new
|
46
|
+
local_file_system = SampleDataDump::Gateways::LocalFileSystem.new(settings)
|
47
|
+
compressed_dump_storage = MySampleDataRemoteStorage::Gateway.new(ActiveRecord::Base.connection, settings)
|
48
|
+
command = SampleDataDump::Commands::UploadCompressedSampleDataDumps.new(local_file_system, compressed_dump_storage)
|
49
|
+
result = command.result
|
50
|
+
puts result.failure if result.failure?
|
51
|
+
end
|
52
|
+
|
53
|
+
desc 'downloads sample data files from storage'
|
54
|
+
task download: :environment do
|
55
|
+
settings = SampleDataDump::Entities::Settings.new
|
56
|
+
local_file_system = SampleDataDump::Gateways::LocalFileSystem.new(settings)
|
57
|
+
compressed_dump_storage = MySampleDataRemoteStorage::Gateway.new(ActiveRecord::Base.connection, settings)
|
58
|
+
command = SampleDataDump::Commands::DownloadCompressedDataDumps.new(local_file_system, compressed_dump_storage)
|
59
|
+
result = command.result
|
60
|
+
puts result.failure if result.failure?
|
61
|
+
end
|
62
|
+
|
63
|
+
desc 'populates data store from downloaded sample data files'
|
64
|
+
task load: :environment do
|
65
|
+
settings = SampleDataDump::Entities::Settings.new
|
66
|
+
local_file_system = SampleDataDump::Gateways::LocalFileSystem.new(settings)
|
67
|
+
data_store = MySampleDataDumpDataStore::Gateway.new(ActiveRecord::Base.connection, settings)
|
68
|
+
command = SampleDataDump::Commands::DecompressAndLoadSampleDataDumps.new(local_file_system, data_store)
|
69
|
+
result = command.result
|
70
|
+
puts result.failure if result.failure?
|
71
|
+
end
|
72
|
+
end
|
15
73
|
```
|
16
74
|
|
17
75
|
## Installation
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SampleDataDump
|
4
|
+
module Commands
|
5
|
+
class DecompressAndLoadSampleDataDumps
|
6
|
+
def initialize(local_file_system_gateway, data_store_gateway)
|
7
|
+
@local_file_system_gateway = local_file_system_gateway
|
8
|
+
@data_store_gateway = data_store_gateway
|
9
|
+
end
|
10
|
+
|
11
|
+
def result
|
12
|
+
@local_file_system_gateway.load_table_configurations.fmap do |table_configs|
|
13
|
+
result = process_table_configs_list(table_configs)
|
14
|
+
return result if result.failure?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def process_table_configs_list(table_configs)
|
21
|
+
table_configs.reverse_each do |table_config|
|
22
|
+
@data_store_gateway.wipe_table(table_config)
|
23
|
+
end
|
24
|
+
|
25
|
+
results = table_configs.map do |table_config|
|
26
|
+
result = process_table_config(table_config)
|
27
|
+
return result if result.failure?
|
28
|
+
end
|
29
|
+
results.last || Dry::Monads::Success(true)
|
30
|
+
end
|
31
|
+
|
32
|
+
def process_table_config(table_config)
|
33
|
+
@data_store_gateway.valid?(table_config).bind do
|
34
|
+
@local_file_system_gateway.decompress_compressed_dump_file(table_config).bind do
|
35
|
+
@data_store_gateway.load_dump_file(table_config).bind do
|
36
|
+
@data_store_gateway.reset_sequence(table_config)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SampleDataDump
|
4
|
+
module Commands
|
5
|
+
class DownloadCompressedSampleDataDumps
|
6
|
+
def initialize(local_file_system_gateway, compressed_dump_storage_gateway)
|
7
|
+
@local_file_system_gateway = local_file_system_gateway
|
8
|
+
@compressed_dump_storage_gateway = compressed_dump_storage_gateway
|
9
|
+
end
|
10
|
+
|
11
|
+
def result
|
12
|
+
@local_file_system_gateway.clean_dump_directory.bind do
|
13
|
+
@local_file_system_gateway.load_table_configurations.fmap do |table_configs|
|
14
|
+
result = process_table_configs_list(table_configs)
|
15
|
+
return result if result.failure?
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def process_table_configs_list(table_configs)
|
23
|
+
results = table_configs.map do |table_config|
|
24
|
+
result = @compressed_dump_storage_gateway.retrieve_compressed_dump_file(table_config)
|
25
|
+
return result if result.failure?
|
26
|
+
end
|
27
|
+
results.last || Dry::Monads::Success(true)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SampleDataDump
|
4
|
+
module Commands
|
5
|
+
class DumpSampleDataToFilesAndCompress
|
6
|
+
def initialize(local_file_system_gateway, data_store_gateway)
|
7
|
+
@local_file_system_gateway = local_file_system_gateway
|
8
|
+
@data_store_gateway = data_store_gateway
|
9
|
+
end
|
10
|
+
|
11
|
+
def result
|
12
|
+
@local_file_system_gateway.clean_dump_directory.bind do
|
13
|
+
@local_file_system_gateway.load_table_configurations.fmap do |table_configs|
|
14
|
+
result = process_table_configs_list(table_configs)
|
15
|
+
return result if result.failure?
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def process_table_configs_list(table_configs)
|
23
|
+
results = table_configs.map do |table_config|
|
24
|
+
result = process_table_config(table_config)
|
25
|
+
return result if result.failure?
|
26
|
+
end
|
27
|
+
results.last || Dry::Monads::Success(true)
|
28
|
+
end
|
29
|
+
|
30
|
+
def process_table_config(table_config)
|
31
|
+
@data_store_gateway.valid?(table_config).bind do
|
32
|
+
@data_store_gateway.dump_to_local_file(table_config).bind do
|
33
|
+
@local_file_system_gateway.compress_dump_file(table_config)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SampleDataDump
|
4
|
+
module Commands
|
5
|
+
class UploadCompressedSampleDataDumps
|
6
|
+
def initialize(local_file_system_gateway, compressed_dump_storage_gateway)
|
7
|
+
@local_file_system_gateway = local_file_system_gateway
|
8
|
+
@compressed_dump_storage_gateway = compressed_dump_storage_gateway
|
9
|
+
end
|
10
|
+
|
11
|
+
def result
|
12
|
+
@local_file_system_gateway.load_table_configurations.fmap do |table_configs|
|
13
|
+
result = process_table_configs_list(table_configs)
|
14
|
+
return result if result.failure?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def process_table_configs_list(table_configs)
|
21
|
+
results = table_configs.map do |config|
|
22
|
+
result = @compressed_dump_storage_gateway.store_compressed_dump_file(config)
|
23
|
+
return result if result.failure?
|
24
|
+
end
|
25
|
+
results.last || Dry::Monads::Success(true)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dry/struct'
|
4
|
+
require 'sample_data_dump/types'
|
5
|
+
|
6
|
+
module SampleDataDump
|
7
|
+
module Entities
|
8
|
+
class Settings < Dry::Struct
|
9
|
+
attribute :compacted_dump_directory, Types::Strict::String.default('compacted_dump')
|
10
|
+
attribute :config_file_path, Types::Strict::String.default('config/sample_data_dump.yml')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'dry/monads/all'
|
4
|
+
require 'sample_data_dump/entities/table_configuration'
|
5
|
+
require 'sample_data_dump/helpers/dump_file'
|
6
|
+
require 'sample_data_dump/interfaces/local_file_system_gateway'
|
7
|
+
require 'yaml'
|
8
|
+
|
9
|
+
module SampleDataDump
|
10
|
+
module Gateways
|
11
|
+
class LocalFileSystem
|
12
|
+
extend Forwardable
|
13
|
+
implements_interface Interfaces::LocalFileSystemGateway
|
14
|
+
|
15
|
+
def initialize(settings)
|
16
|
+
@settings = settings
|
17
|
+
@sample_data_dump_config = YAML.load_file(config_file_path)
|
18
|
+
|
19
|
+
`mkdir -p #{compacted_dump_directory}`
|
20
|
+
end
|
21
|
+
|
22
|
+
def clean_dump_directory
|
23
|
+
`rm -rf #{compacted_dump_directory}/*.sql`
|
24
|
+
`rm -rf #{compacted_dump_directory}/*.sql.tar.gz`
|
25
|
+
Dry::Monads::Success(true)
|
26
|
+
end
|
27
|
+
|
28
|
+
def compress_dump_file(table_configuration)
|
29
|
+
dump_file_helper = Helpers::DumpFile.new(table_configuration, @settings)
|
30
|
+
uncompressed_file_path = dump_file_helper.local_dump_file_path
|
31
|
+
uncompressed_file_name = dump_file_helper.local_dump_file_name
|
32
|
+
compressed_file_name = dump_file_helper.local_compressed_dump_file_name
|
33
|
+
compressed_file_path = dump_file_helper.local_compressed_dump_file_path
|
34
|
+
|
35
|
+
unless File.exists?(uncompressed_file_path)
|
36
|
+
return Dry::Monads::Failure("No file found at #{uncompressed_file_path}")
|
37
|
+
end
|
38
|
+
|
39
|
+
`cd #{compacted_dump_directory}; tar -zcf #{compressed_file_name} #{uncompressed_file_name}`
|
40
|
+
|
41
|
+
if File.exist?(compressed_file_path)
|
42
|
+
Dry::Monads::Success(compressed_file_path)
|
43
|
+
else
|
44
|
+
Dry::Monads::Failure("No file found at #{compressed_file_path} after compressing")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def decompress_compressed_dump_file(table_configuration)
|
49
|
+
dump_file_helper = Helpers::DumpFile.new(table_configuration, @settings)
|
50
|
+
compressed_file_name = dump_file_helper.local_compressed_dump_file_name
|
51
|
+
compressed_file_path = dump_file_helper.local_compressed_dump_file_path
|
52
|
+
unless File.exist?(compressed_file_path)
|
53
|
+
return Dry::Monads::Failure("#{compressed_file_path} does not exist for decompressing!")
|
54
|
+
end
|
55
|
+
|
56
|
+
`cd #{compacted_dump_directory}; tar -zxf #{compressed_file_name}`
|
57
|
+
Dry::Monads::Success(true)
|
58
|
+
end
|
59
|
+
|
60
|
+
def load_table_configurations
|
61
|
+
result = []
|
62
|
+
@sample_data_dump_config.each_pair do |schema_name, schema_config_hash|
|
63
|
+
schema_config_hash.each_pair do |table_name, table_config_hash|
|
64
|
+
dump_where = table_config_hash&.[]('dump_where') || '1 = 1'
|
65
|
+
obfuscate_columns = table_config_hash&.[]('obfuscate_columns') || []
|
66
|
+
result << Entities::TableConfiguration.new(
|
67
|
+
schema_name: schema_name,
|
68
|
+
table_name: table_name,
|
69
|
+
dump_where: dump_where,
|
70
|
+
obfuscate_columns: obfuscate_columns
|
71
|
+
)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
Dry::Monads::Success(result)
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
|
79
|
+
attr_reader :settings
|
80
|
+
def_delegators :settings, :compacted_dump_directory, :config_file_path
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SampleDataDump
|
4
|
+
module Helpers
|
5
|
+
class DumpFile
|
6
|
+
extend Forwardable
|
7
|
+
|
8
|
+
def initialize(table_configuration, settings)
|
9
|
+
@table_configuration = table_configuration
|
10
|
+
@settings = settings
|
11
|
+
end
|
12
|
+
|
13
|
+
def local_compressed_dump_file_name
|
14
|
+
"#{@table_configuration.schema_name}.#{@table_configuration.table_name}.sql.tar.gz"
|
15
|
+
end
|
16
|
+
|
17
|
+
def local_compressed_dump_file_path
|
18
|
+
"#{compacted_dump_directory}/#{local_compressed_dump_file_name}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def local_dump_file_name
|
22
|
+
"#{@table_configuration.schema_name}.#{@table_configuration.table_name}.sql"
|
23
|
+
end
|
24
|
+
|
25
|
+
def local_dump_file_path
|
26
|
+
"#{compacted_dump_directory}/#{local_dump_file_name}"
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
attr_reader :settings
|
32
|
+
def_delegators :settings, :compacted_dump_directory
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'duckface'
|
4
|
+
|
5
|
+
module SampleDataDump
|
6
|
+
module Interfaces
|
7
|
+
module CompressedDumpStorageGateway
|
8
|
+
extend Duckface::ActsAsInterface
|
9
|
+
|
10
|
+
def retrieve_compressed_dump_file(_table_configuration)
|
11
|
+
raise NotImplementedError
|
12
|
+
end
|
13
|
+
|
14
|
+
def store_compressed_dump_file(_table_configuration)
|
15
|
+
raise NotImplementedError
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -4,14 +4,10 @@ require 'duckface'
|
|
4
4
|
|
5
5
|
module SampleDataDump
|
6
6
|
module Interfaces
|
7
|
-
module
|
7
|
+
module DataStoreGateway
|
8
8
|
extend Duckface::ActsAsInterface
|
9
9
|
|
10
|
-
def
|
11
|
-
raise NotImplementedError
|
12
|
-
end
|
13
|
-
|
14
|
-
def dump_and_compress_data_to_local_file(_table_configuration)
|
10
|
+
def dump_to_local_file(_table_configuration)
|
15
11
|
raise NotImplementedError
|
16
12
|
end
|
17
13
|
|
@@ -19,22 +15,10 @@ module SampleDataDump
|
|
19
15
|
raise NotImplementedError
|
20
16
|
end
|
21
17
|
|
22
|
-
def load_table_configurations
|
23
|
-
raise NotImplementedError
|
24
|
-
end
|
25
|
-
|
26
|
-
def move_compressed_dump_file_to_central_location(_table_configuration)
|
27
|
-
raise NotImplementedError
|
28
|
-
end
|
29
|
-
|
30
18
|
def reset_sequence(_table_configuration)
|
31
19
|
raise NotImplementedError
|
32
20
|
end
|
33
21
|
|
34
|
-
def retrieve_compressed_dump_file_from_central_location(_table_configuration)
|
35
|
-
raise NotImplementedError
|
36
|
-
end
|
37
|
-
|
38
22
|
def valid?(_table_configuration)
|
39
23
|
raise NotImplementedError
|
40
24
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'duckface'
|
4
|
+
|
5
|
+
module SampleDataDump
|
6
|
+
module Interfaces
|
7
|
+
module LocalFileSystemGateway
|
8
|
+
extend Duckface::ActsAsInterface
|
9
|
+
|
10
|
+
def clean_dump_directory
|
11
|
+
raise NotImplementedError
|
12
|
+
end
|
13
|
+
|
14
|
+
def compress_dump_file(_table_configuration)
|
15
|
+
raise NotImplementedError
|
16
|
+
end
|
17
|
+
|
18
|
+
def decompress_compressed_dump_file(_table_configuration)
|
19
|
+
raise NotImplementedError
|
20
|
+
end
|
21
|
+
|
22
|
+
def load_table_configurations
|
23
|
+
raise NotImplementedError
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sample_data_dump
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bellroy Dev Team
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-matcher
|
@@ -132,7 +132,6 @@ files:
|
|
132
132
|
- ".gitignore"
|
133
133
|
- ".reek.yml"
|
134
134
|
- ".rspec"
|
135
|
-
- ".rspec_status"
|
136
135
|
- ".rubocop.yml"
|
137
136
|
- ".ruby-version"
|
138
137
|
- CHANGELOG.md
|
@@ -141,13 +140,18 @@ files:
|
|
141
140
|
- Guardfile
|
142
141
|
- README.md
|
143
142
|
- lib/sample_data_dump.rb
|
143
|
+
- lib/sample_data_dump/commands/decompress_and_load_sample_data_dumps.rb
|
144
|
+
- lib/sample_data_dump/commands/download_compressed_sample_data_dumps.rb
|
145
|
+
- lib/sample_data_dump/commands/dump_sample_data_to_files_and_compress.rb
|
146
|
+
- lib/sample_data_dump/commands/upload_compressed_sample_data_dumps.rb
|
147
|
+
- lib/sample_data_dump/entities/settings.rb
|
144
148
|
- lib/sample_data_dump/entities/table_configuration.rb
|
145
|
-
- lib/sample_data_dump/
|
149
|
+
- lib/sample_data_dump/gateways/local_file_system.rb
|
150
|
+
- lib/sample_data_dump/helpers/dump_file.rb
|
151
|
+
- lib/sample_data_dump/interfaces/compressed_dump_storage_gateway.rb
|
152
|
+
- lib/sample_data_dump/interfaces/data_store_gateway.rb
|
153
|
+
- lib/sample_data_dump/interfaces/local_file_system_gateway.rb
|
146
154
|
- lib/sample_data_dump/types.rb
|
147
|
-
- lib/sample_data_dump/use_cases/actor_downloads_sample_data_files.rb
|
148
|
-
- lib/sample_data_dump/use_cases/actor_dumps_sample_data_to_files.rb
|
149
|
-
- lib/sample_data_dump/use_cases/actor_loads_sample_data_files.rb
|
150
|
-
- lib/sample_data_dump/use_cases/actor_uploads_sample_data_files.rb
|
151
155
|
- lib/sample_data_dump/version.rb
|
152
156
|
- sample_data_dump.gemspec
|
153
157
|
homepage: http://www.bellroy.com
|
data/.rspec_status
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
example_id | status | run_time |
|
2
|
-
-------------------------------------------------------------------------------------- | ------ | --------------- |
|
3
|
-
./spec/duckface/acts_as_interface_spec.rb[1:1:1:1:1] | passed | 0.00232 seconds |
|
4
|
-
./spec/duckface/acts_as_interface_spec.rb[1:1:1:1:2] | passed | 0.00333 seconds |
|
5
|
-
./spec/lib/sample_data_dump/entities/table_configuration_spec.rb[1:1:1] | passed | 0.00021 seconds |
|
6
|
-
./spec/lib/sample_data_dump/use_cases/actor_downloads_sample_data_files_spec.rb[1:1:1] | passed | 0.01413 seconds |
|
7
|
-
./spec/lib/sample_data_dump/use_cases/actor_dumps_sample_data_to_files_spec.rb[1:1:1] | passed | 0.00108 seconds |
|
8
|
-
./spec/lib/sample_data_dump/use_cases/actor_loads_sample_data_files_spec.rb[1:1:1] | passed | 0.00174 seconds |
|
9
|
-
./spec/lib/sample_data_dump/use_cases/actor_uploads_sample_data_files_spec.rb[1:1:1] | passed | 0.001 seconds |
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module SampleDataDump
|
4
|
-
module UseCases
|
5
|
-
class ActorDownloadsSampleDataFiles
|
6
|
-
def initialize(persistence)
|
7
|
-
@persistence = persistence
|
8
|
-
end
|
9
|
-
|
10
|
-
def result
|
11
|
-
@persistence.load_table_configurations.fmap do |table_configurations|
|
12
|
-
result = process_table_configurations_list(table_configurations)
|
13
|
-
return result if result.failure?
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def process_table_configurations_list(table_configurations)
|
20
|
-
results = table_configurations.map do |table_configuration|
|
21
|
-
result = process_table_configuration(table_configuration)
|
22
|
-
return result if result.failure?
|
23
|
-
end
|
24
|
-
results.last || Dry::Monads::Success(true)
|
25
|
-
end
|
26
|
-
|
27
|
-
def process_table_configuration(table_configuration)
|
28
|
-
@persistence.valid?(table_configuration).bind do
|
29
|
-
@persistence.retrieve_compressed_dump_file_from_central_location(table_configuration)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module SampleDataDump
|
4
|
-
module UseCases
|
5
|
-
class ActorDumpsSampleDataToFiles
|
6
|
-
def initialize(persistence)
|
7
|
-
@persistence = persistence
|
8
|
-
end
|
9
|
-
|
10
|
-
def result
|
11
|
-
@persistence.load_table_configurations.fmap do |table_configurations|
|
12
|
-
result = process_table_configurations_list(table_configurations)
|
13
|
-
return result if result.failure?
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def process_table_configurations_list(table_configurations)
|
20
|
-
results = table_configurations.map do |table_configuration|
|
21
|
-
result = process_table_configuration(table_configuration)
|
22
|
-
return result if result.failure?
|
23
|
-
end
|
24
|
-
results.last || Dry::Monads::Success(true)
|
25
|
-
end
|
26
|
-
|
27
|
-
def process_table_configuration(table_configuration)
|
28
|
-
@persistence.valid?(table_configuration).bind do
|
29
|
-
@persistence.dump_and_compress_data_to_local_file(table_configuration)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module SampleDataDump
|
4
|
-
module UseCases
|
5
|
-
class ActorLoadsSampleDataFiles
|
6
|
-
def initialize(persistence)
|
7
|
-
@persistence = persistence
|
8
|
-
end
|
9
|
-
|
10
|
-
def result
|
11
|
-
@persistence.load_table_configurations.fmap do |table_configurations|
|
12
|
-
result = process_table_configurations_list(table_configurations)
|
13
|
-
return result if result.failure?
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def process_table_configurations_list(table_configurations)
|
20
|
-
table_configurations.reverse_each do |table_configuration|
|
21
|
-
@persistence.wipe_table(table_configuration)
|
22
|
-
end
|
23
|
-
|
24
|
-
results = table_configurations.map do |table_configuration|
|
25
|
-
result = process_table_configuration(table_configuration)
|
26
|
-
return result if result.failure?
|
27
|
-
end
|
28
|
-
results.last || Dry::Monads::Success(true)
|
29
|
-
end
|
30
|
-
|
31
|
-
def process_table_configuration(table_configuration)
|
32
|
-
@persistence.valid?(table_configuration).bind do
|
33
|
-
@persistence.decompress_compressed_dump_file(table_configuration).bind do
|
34
|
-
@persistence.load_dump_file(table_configuration).bind do
|
35
|
-
@persistence.reset_sequence(table_configuration)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module SampleDataDump
|
4
|
-
module UseCases
|
5
|
-
class ActorUploadsSampleDataFiles
|
6
|
-
def initialize(persistence)
|
7
|
-
@persistence = persistence
|
8
|
-
end
|
9
|
-
|
10
|
-
def result
|
11
|
-
@persistence.load_table_configurations.fmap do |table_configurations|
|
12
|
-
result = process_table_configurations_list(table_configurations)
|
13
|
-
return result if result.failure?
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def process_table_configurations_list(table_configurations)
|
20
|
-
results = table_configurations.map do |table_configuration|
|
21
|
-
result = process_table_configuration(table_configuration)
|
22
|
-
return result if result.failure?
|
23
|
-
end
|
24
|
-
results.last || Dry::Monads::Success(true)
|
25
|
-
end
|
26
|
-
|
27
|
-
def process_table_configuration(table_configuration)
|
28
|
-
@persistence.valid?(table_configuration).bind do
|
29
|
-
@persistence.move_compressed_dump_file_to_central_location(table_configuration)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|