smuggle 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 889fa2b22dfc67ab693e35df9ed5c6cbe59f24e5f4a0dc53f668852994dd64ce
4
- data.tar.gz: 70473995af55dd6dcf294e70223944ab2c547c102c955dfd36e61eca326293ab
3
+ metadata.gz: c0caa4c9198d42a722b2ea659965ed18e86c15c5f630f5c59634221d9bcd200d
4
+ data.tar.gz: 2c98900dd7b290b1fe1eb386959a4e4db2aea05d428b8fde374f5c28d550d5fa
5
5
  SHA512:
6
- metadata.gz: fcfb395b44dbb7fdbcaba150cd96bbbeda3dd6292404870c3a1b341f826ee1d2b3685781873df0a94d3688616df0199b275c5321aa3cd46b86223577ee2b04e4
7
- data.tar.gz: aa20b7a0657d6280760dc1b5af27daa3818d24d5fb81a3eee7bce6cf9cb10212798170cc2ef70146dd62be8e30ff4aa52218f9c5d0b07bd88ef12979662cdc4f
6
+ metadata.gz: 3ca2eb0538745ef5535396b1e6a7bf1cac459b9d93f51ef22453f72f3910ff9f8a83ffae778abe982b2b19580f1b73e8241b62a7043c0254ab806c14274ea717
7
+ data.tar.gz: f1ec0594eef97070175cc6302e650bc1a6efe729d6f43d93efa9ffbe220578d02461fb3c12f9efc8fe432b65095d98a4d92a1ab94c6e3f25e5c13b12b8691375
@@ -4,7 +4,9 @@ require "csv"
4
4
  require "smuggle/version"
5
5
  require "smuggle/errors"
6
6
  require "smuggle/exporter/base"
7
+ require "smuggle/exporter/resolver"
7
8
  require "smuggle/importer/base"
9
+ require "smuggle/importer/resolver"
8
10
  require "smuggle/services/export"
9
11
  require "smuggle/services/import"
10
12
  require "smuggle/engine" if defined?(Rails)
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Smuggle
4
+ module Exporter
5
+ class Resolver
6
+ def call(scope:)
7
+ Object.const_get("#{scope.name}Exporter")
8
+ rescue NameError
9
+ raise ExporterNotFound
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Smuggle
4
+ module Importer
5
+ class Resolver
6
+ def call(model:)
7
+ Object.const_get("#{model.name}Importer")
8
+ rescue NameError
9
+ raise ImporterNotFound
10
+ end
11
+ end
12
+ end
13
+ end
@@ -3,36 +3,17 @@
3
3
  module Smuggle
4
4
  module Services
5
5
  class Export
6
- class << self
7
- def call(scope:, **options)
8
- new(scope, options).send(:call)
9
- end
10
- end
11
-
12
- private
13
-
14
- attr_reader :scope
15
-
16
- def initialize(scope, options = {})
17
- @exporter = options[:exporter]
18
- @scope = scope
19
- end
20
-
21
- def call
22
- generate_csv
6
+ def self.call(**args)
7
+ new.call(args)
23
8
  end
24
9
 
25
- def resolve
26
- Object.const_get("#{scope.name}Exporter")
27
- rescue NameError
28
- raise ExporterNotFound
10
+ def initialize(resolver: Smuggle::Exporter::Resolver.new)
11
+ @resolver = resolver
29
12
  end
30
13
 
31
- def exporter
32
- @exporter || resolve
33
- end
14
+ def call(scope:, **options)
15
+ exporter = options.fetch(:exporter) { @resolver.call(scope: scope) }
34
16
 
35
- def generate_csv
36
17
  CSV.generate do |csv|
37
18
  csv << exporter.header
38
19
 
@@ -3,37 +3,17 @@
3
3
  module Smuggle
4
4
  module Services
5
5
  class Import
6
- class << self
7
- def call(model:, filepath:, **options)
8
- new(model, filepath, options).send(:call)
9
- end
10
- end
11
-
12
- private
13
-
14
- attr_reader :model, :filepath
15
-
16
- def initialize(model, filepath, options = {})
17
- @filepath = filepath
18
- @importer = options[:importer]
19
- @model = model
20
- end
21
-
22
- def call
23
- import_from_csv
6
+ def self.call(**args)
7
+ new.call(args)
24
8
  end
25
9
 
26
- def resolve
27
- Object.const_get("#{model.name}Importer")
28
- rescue NameError
29
- raise ImporterNotFound
10
+ def initialize(resolver: Smuggle::Importer::Resolver.new)
11
+ @resolver = resolver
30
12
  end
31
13
 
32
- def importer
33
- @importer || resolve
34
- end
14
+ def call(model:, filepath:, **options)
15
+ importer = options.fetch(:importer) { @resolver.call(model: model) }
35
16
 
36
- def import_from_csv
37
17
  CSV.read(filepath, headers: true, **importer.csv_converters).map do |row|
38
18
  importer.new(row, model).persist
39
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Smuggle
4
- VERSION = "0.5.0"
4
+ VERSION = "0.6.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smuggle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Crivella
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-04-24 00:00:00.000000000 Z
12
+ date: 2019-07-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -113,16 +113,22 @@ dependencies:
113
113
  name: rubocop
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - "~>"
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0.49'
119
+ - - "<"
117
120
  - !ruby/object:Gem::Version
118
- version: '0.6'
121
+ version: '1'
119
122
  type: :development
120
123
  prerelease: false
121
124
  version_requirements: !ruby/object:Gem::Requirement
122
125
  requirements:
123
- - - "~>"
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '0.49'
129
+ - - "<"
124
130
  - !ruby/object:Gem::Version
125
- version: '0.6'
131
+ version: '1'
126
132
  - !ruby/object:Gem::Dependency
127
133
  name: rubocop-performance
128
134
  requirement: !ruby/object:Gem::Requirement
@@ -191,7 +197,9 @@ files:
191
197
  - lib/smuggle/engine.rb
192
198
  - lib/smuggle/errors.rb
193
199
  - lib/smuggle/exporter/base.rb
200
+ - lib/smuggle/exporter/resolver.rb
194
201
  - lib/smuggle/importer/base.rb
202
+ - lib/smuggle/importer/resolver.rb
195
203
  - lib/smuggle/services/export.rb
196
204
  - lib/smuggle/services/import.rb
197
205
  - lib/smuggle/version.rb
@@ -217,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
217
225
  - !ruby/object:Gem::Version
218
226
  version: '0'
219
227
  requirements: []
220
- rubygems_version: 3.0.3
228
+ rubygems_version: 3.0.4
221
229
  signing_key:
222
230
  specification_version: 4
223
231
  summary: It exports and imports all kinds of stuff from and to CSV