minato-utils 0.2.3 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a67141ad56404c902119ea4a8d6e8922416e3ec5005978a5f129ee7819a5af16
4
- data.tar.gz: ed7a6709884e152c1a387537f7ab0a7c11eff66a51555cc288c18c68ca7c1aeb
3
+ metadata.gz: a05b7abec99a94707b89712be193674bcca9a435659048c056bc35b1a2181388
4
+ data.tar.gz: 2c62d3651df6545e0246d6b0a3707a43c18e8754b3b870c49251783eef2929de
5
5
  SHA512:
6
- metadata.gz: a86da77396744631e10d1f41b5acdb1de02e4ad35585ca3095cda795176e2ed4571160b588cd6d2cae15dcb0b3c09dac62a5c1db5fd75e5467794bf1bd8bfcd8
7
- data.tar.gz: 847de42b62d239fe443f5e65dc28884c7feed3dfd0b95822523483a0a83f98a34ca7d059b162f74f22684e155d1c721949b1a734f215b94713c3dbdea00347d6
6
+ metadata.gz: b189685deee6144188542ca6a54aa3b5b30539c431b71c3a6ea39be4570df35f8a35a9f1441b0187ffeb22b5fa0a09b664f8bdbf0be25c058e9fb4a33f907395
7
+ data.tar.gz: 8be054f544d3820864763af19471edc40acf4077e795a97aa5dbcc7db41d6eb12a79779c309e1f586152de30638aa608b59194680a06a8019aacc49adb9bfcfc
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  *.gem
2
2
  *.code-workspace
3
+ .rbenv-gemsets
data/Gemfile.lock CHANGED
@@ -1,13 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- minato-utils (0.2.2)
4
+ minato-utils (0.3.0)
5
5
  activesupport (~> 6.0)
6
6
  httparty (~> 0.18)
7
+ simple_command (~> 0.1.0)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
12
+ activemodel (6.1.4.4)
13
+ activesupport (= 6.1.4.4)
14
+ activerecord (6.1.4.4)
15
+ activemodel (= 6.1.4.4)
16
+ activesupport (= 6.1.4.4)
11
17
  activesupport (6.1.4.4)
12
18
  concurrent-ruby (~> 1.0, >= 1.0.2)
13
19
  i18n (>= 1.6, < 2)
@@ -21,6 +27,10 @@ GEM
21
27
  concurrent-ruby (1.1.9)
22
28
  crack (0.4.5)
23
29
  rexml
30
+ database_cleaner-active_record (2.0.1)
31
+ activerecord (>= 5.a)
32
+ database_cleaner-core (~> 2.0.0)
33
+ database_cleaner-core (2.0.1)
24
34
  diff-lcs (1.4.4)
25
35
  hashdiff (1.0.1)
26
36
  httparty (0.20.0)
@@ -32,7 +42,7 @@ GEM
32
42
  method_source (1.0.0)
33
43
  mime-types (3.4.1)
34
44
  mime-types-data (~> 3.2015)
35
- mime-types-data (3.2021.1115)
45
+ mime-types-data (3.2022.0105)
36
46
  minitest (5.15.0)
37
47
  multi_xml (0.6.0)
38
48
  parallel (1.21.0)
@@ -80,6 +90,8 @@ GEM
80
90
  rubocop-rspec (2.6.0)
81
91
  rubocop (~> 1.19)
82
92
  ruby-progressbar (1.11.0)
93
+ simple_command (0.1.0)
94
+ sqlite3 (1.4.2)
83
95
  tzinfo (2.0.4)
84
96
  concurrent-ruby (~> 1.0)
85
97
  unicode-display_width (2.1.0)
@@ -90,10 +102,13 @@ GEM
90
102
  zeitwerk (2.5.1)
91
103
 
92
104
  PLATFORMS
105
+ x86_64-darwin-21
93
106
  x86_64-linux
94
107
 
95
108
  DEPENDENCIES
109
+ activerecord (~> 6.1.4)
96
110
  bundler (~> 2.2)
111
+ database_cleaner-active_record (~> 2.0.1)
97
112
  json (~> 2.6)
98
113
  minato-utils!
99
114
  pry (~> 0.14)
@@ -103,7 +118,8 @@ DEPENDENCIES
103
118
  rubocop-rails (~> 2.12.4)
104
119
  rubocop-rake (~> 0.6.0)
105
120
  rubocop-rspec (~> 2.6.0)
121
+ sqlite3 (~> 1.4.2)
106
122
  webmock (~> 3.14)
107
123
 
108
124
  BUNDLED WITH
109
- 2.2.33
125
+ 2.3.13
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'simple_command'
4
+ require_relative 'create'
5
+ require_relative 'destroy'
6
+ require_relative 'index'
7
+ require_relative 'nested_scoped_index'
8
+ require_relative 'show'
9
+ require_relative 'show_by'
10
+ require_relative 'update'
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minato
4
+ module Utils
5
+ module BaseCommand
6
+ class Create
7
+ prepend SimpleCommand
8
+
9
+ def initialize(model_class, params)
10
+ @model_class = model_class
11
+ @params = params
12
+ end
13
+
14
+ def call
15
+ @model_class.send :create!, @params
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minato
4
+ module Utils
5
+ module BaseCommand
6
+ class Destroy
7
+ prepend SimpleCommand
8
+
9
+ def initialize(model)
10
+ @model = model
11
+ end
12
+
13
+ def call
14
+ @model.destroy!
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minato
4
+ module Utils
5
+ module BaseCommand
6
+ class Index
7
+ prepend SimpleCommand
8
+
9
+ def initialize(model_class, filters = {})
10
+ @model_class = model_class
11
+ @filters = filters
12
+ end
13
+
14
+ def call
15
+ return @model_class.where(@filters) if @filters.present?
16
+
17
+ @model_class.all
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minato
4
+ module Utils
5
+ module BaseCommand
6
+ class NestedScopedIndex
7
+ prepend SimpleCommand
8
+
9
+ def initialize(scope, context, model_class, parent_id)
10
+ @scope = scope
11
+ @context = context
12
+ @model_class = model_class
13
+ @parent_id = parent_id
14
+ end
15
+
16
+ def call
17
+ @scope.new(@context, @model_class, @parent_id).resolve
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minato
4
+ module Utils
5
+ module BaseCommand
6
+ class Show
7
+ prepend SimpleCommand
8
+
9
+ def initialize(model_class, id)
10
+ @model_class = model_class
11
+ @id = id
12
+ end
13
+
14
+ def call
15
+ @model_class.send :find, @id
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minato
4
+ module Utils
5
+ module BaseCommand
6
+ class ShowBy
7
+ prepend SimpleCommand
8
+
9
+ def initialize(model_class, attribute, value)
10
+ @model_class = model_class
11
+ @attribute = attribute
12
+ @value = value
13
+ end
14
+
15
+ def call
16
+ @model_class.send :find_by!, @attribute => @value
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Minato
4
+ module Utils
5
+ module BaseCommand
6
+ class Update
7
+ prepend SimpleCommand
8
+
9
+ def initialize(model, params)
10
+ @model = model
11
+ @params = params
12
+ end
13
+
14
+ def call
15
+ @model.update!(@params)
16
+ @model
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -41,5 +41,7 @@ module Minato
41
41
  class Unauthorized < NetworkException; end
42
42
 
43
43
  class UnprocessableEntity < NetworkException; end
44
+
45
+ class UnknownException < SerializableException; end
44
46
  end
45
47
  end
@@ -17,8 +17,6 @@ module Minato
17
17
 
18
18
  private
19
19
 
20
- SUCCESSFUL_RESPONSE_CODE = [200, 201, 204, 302, 303].freeze
21
-
22
20
  EXCEPTION_HANDLERS_MAP = {
23
21
  400 => 'bad_request',
24
22
  401 => 'unauthorized',
@@ -33,7 +31,7 @@ module Minato
33
31
  }.freeze
34
32
 
35
33
  def response_error?(response)
36
- SUCCESSFUL_RESPONSE_CODE.exclude?(response.code)
34
+ response.code >= 400
37
35
  end
38
36
 
39
37
  def raise_exception(response)
@@ -41,7 +39,8 @@ module Minato
41
39
  end
42
40
 
43
41
  def get_exception_class_from(code)
44
- "Minato::Utils::#{EXCEPTION_HANDLERS_MAP[code].camelize}".constantize
42
+ exception_name = EXCEPTION_HANDLERS_MAP[code] || 'unknown_exception'
43
+ "Minato::Utils::#{exception_name.camelize}".constantize
45
44
  end
46
45
  end
47
46
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Minato
4
4
  module Utils
5
- VERSION = '0.2.3'
5
+ VERSION = '0.3.0'
6
6
  end
7
7
  end
data/lib/minato/utils.rb CHANGED
@@ -5,6 +5,7 @@ require_relative 'utils/exception'
5
5
  require_relative 'utils/helpers'
6
6
  require_relative 'utils/logger'
7
7
  require_relative 'utils/version'
8
+ require_relative 'utils/base_command/base'
8
9
 
9
10
  module Minato
10
11
  module Utils
@@ -26,8 +26,11 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency 'activesupport', '~> 6.0'
28
28
  spec.add_dependency 'httparty', '~> 0.18'
29
+ spec.add_dependency 'simple_command', '~> 0.1.0'
29
30
 
31
+ spec.add_development_dependency 'activerecord', '~> 6.1.4'
30
32
  spec.add_development_dependency 'bundler', '~> 2.2'
33
+ spec.add_development_dependency 'database_cleaner-active_record', '~> 2.0.1'
31
34
  spec.add_development_dependency 'json', '~> 2.6'
32
35
  spec.add_development_dependency 'pry', '~> 0.14'
33
36
  spec.add_development_dependency 'rake', '~> 10.0'
@@ -36,6 +39,7 @@ Gem::Specification.new do |spec|
36
39
  spec.add_development_dependency 'rubocop-rails', '~> 2.12.4'
37
40
  spec.add_development_dependency 'rubocop-rake', '~> 0.6.0'
38
41
  spec.add_development_dependency 'rubocop-rspec', '~> 2.6.0'
42
+ spec.add_development_dependency 'sqlite3', '~> 1.4.2'
39
43
  spec.add_development_dependency 'webmock', '~> 3.14'
40
44
 
41
45
  spec.metadata = {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minato-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ferreri
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-12 00:00:00.000000000 Z
11
+ date: 2022-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.18'
41
+ - !ruby/object:Gem::Dependency
42
+ name: simple_command
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.1.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: activerecord
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 6.1.4
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 6.1.4
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +80,20 @@ dependencies:
52
80
  - - "~>"
53
81
  - !ruby/object:Gem::Version
54
82
  version: '2.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: database_cleaner-active_record
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 2.0.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 2.0.1
55
97
  - !ruby/object:Gem::Dependency
56
98
  name: json
57
99
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +206,20 @@ dependencies:
164
206
  - - "~>"
165
207
  - !ruby/object:Gem::Version
166
208
  version: 2.6.0
209
+ - !ruby/object:Gem::Dependency
210
+ name: sqlite3
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: 1.4.2
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: 1.4.2
167
223
  - !ruby/object:Gem::Dependency
168
224
  name: webmock
169
225
  requirement: !ruby/object:Gem::Requirement
@@ -197,6 +253,14 @@ files:
197
253
  - bin/console
198
254
  - bin/setup
199
255
  - lib/minato/utils.rb
256
+ - lib/minato/utils/base_command/base.rb
257
+ - lib/minato/utils/base_command/create.rb
258
+ - lib/minato/utils/base_command/destroy.rb
259
+ - lib/minato/utils/base_command/index.rb
260
+ - lib/minato/utils/base_command/nested_scoped_index.rb
261
+ - lib/minato/utils/base_command/show.rb
262
+ - lib/minato/utils/base_command/show_by.rb
263
+ - lib/minato/utils/base_command/update.rb
200
264
  - lib/minato/utils/client.rb
201
265
  - lib/minato/utils/configuration.rb
202
266
  - lib/minato/utils/exception.rb