servi-craft 0.1.0 → 0.1.2

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: 11b3b87f23926925d24de7402e3665750fa60e919bd4aa2a9b2d2163640f13c8
4
- data.tar.gz: 94a447219d1e31ef1677ce96b2652afe8fedc49cf3109c8068480ed1ea01bc9f
3
+ metadata.gz: 147fcedf08785f0ecf475bbd156a210eadbd602a0b874f8aa14c59eab55f41fc
4
+ data.tar.gz: 113b02dc2b1ce00dee1eab7716ef900873e603eb32dba0e701f957727d847387
5
5
  SHA512:
6
- metadata.gz: 1e8254570f0a11e169a5053c0929bef944fab2df65fc741a476849647207a3cf9d65b53fc4c6f84c2a52890c1f00cde552833a8db4a15b37070ba15661b66806
7
- data.tar.gz: eead6fbfa54f16d590bb9d8a6387e3cdb8972c4777b014b4cad3600eba7d3591e7e9eca19719844eda4193bddc1f27bb62228475192b3671e104e7b2f03c1767
6
+ metadata.gz: d378b46af7514db7ce773a6d13502726b5635cdcd72a385446cceb69f5578718ae5a23318885169319fd74110ab7b033e93e648182b691cb4013ab13dced321b
7
+ data.tar.gz: 90cc7e1ade43807150ec00a214e325afb1223c18569c48a1aa5bf48e5e1a53cd64f2fe1cd9dae81a78a3c220989fe8092ec0609c55f7b5559d101538f406c5c0
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'model_ancestry/base'
4
+ # init base service Objects
5
+ class ServiCraftGenerator < Rails::Generators::NamedBase
6
+ source_root File.expand_path('templates', __dir__)
7
+
8
+ argument :attributes, type: :array, default: [], banner: 'field:type field:type'
9
+
10
+ class_option :services, type: :array, default: %w[create update destroy query]
11
+ class_option :parent_attribute, type: :string
12
+
13
+ def gen_init
14
+ assign_service_params
15
+ options.services.each { |service| init service }
16
+ end
17
+
18
+ private
19
+
20
+ def assign_service_params
21
+ set_parent_attribute if options.parent_attribute
22
+ set_service_class_path
23
+ set_service_dir
24
+ @service_module = @service_class_path.map(&:camelcase).join('::')
25
+ set_service_model
26
+ end
27
+
28
+ def set_parent_attribute
29
+ @parent_attribute = ::ModelAncestry::Base.find_parent(attributes, options.parent_attribute)
30
+ end
31
+
32
+ def set_service_class_path
33
+ plural_name = name.pluralize
34
+ @service_class_path = plural_name.include?('/') ? plural_name.split('/') : plural_name.split('::')
35
+ @service_class_path.map!(&:underscore)
36
+ end
37
+
38
+ def set_service_dir
39
+ @service_dir = @service_class_path.join('/')
40
+ @service_dir = ['app', 'services', @service_class_path].flatten.compact.join('/')
41
+ end
42
+
43
+ def set_service_model
44
+ @service_model = @service_class_path.map(&:camelcase)
45
+ @service_model[-1] = file_name.camelcase
46
+ @service_model = "::#{@service_model.join('::')}"
47
+ end
48
+
49
+ def init(service)
50
+ type = service.underscore.split('_').first
51
+ type = 'info' unless defined_services.include? type
52
+
53
+ @service_class_name = service.camelize
54
+ template "#{type}.template", "#{@service_dir}/#{service}.rb"
55
+ end
56
+
57
+ def defined_services
58
+ %w[create update destroy query info]
59
+ end
60
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'servi_craft/create'
4
+ module <%= @service_module %>
5
+ # Service object to create a new <%= file_name.singularize.underscore %>.
6
+ # [Modified by] rails generate servi_craft <%= file_name %>
7
+ # [Last modified] <%= Date.today.to_s %>
8
+ class <%= @service_class_name %> < ServiCraft::Create
9
+ # Set params to create a new <%= file_name.singularize.underscore %>.
10
+ # [Modified by] rails generate servi_craft <%= file_name %>
11
+ # [Last modified] <%= Date.today.to_s %>
12
+ <% if @parent_attribute %>def initialize(<%= @parent_attribute.name %>, params)
13
+ @<%= @parent_attribute.name %> = <%= @parent_attribute.name %><% else %>def initialize(params)<% end %>
14
+ super(<%= @service_model %>, params)
15
+ end<% if @parent_attribute %>
16
+
17
+ # Set <%= @parent_attribute.name.singularize.underscore %> and create the <%= file_name.singularize.underscore %>.
18
+ # [Modified by] rails generate servi_craft <%= file_name %>
19
+ # [Last modified] <%= Date.today.to_s %>
20
+ def call
21
+ super(before_assign_attributes:)
22
+ end
23
+
24
+ private
25
+
26
+ # Set <%= @parent_attribute.name.singularize.underscore %> attribute.
27
+ # [Modified by] rails generate servi_craft <%= file_name %>
28
+ # [Last modified] <%= Date.today.to_s %>
29
+ def before_assign_attributes
30
+ @record.<%= @parent_attribute.index_name %> = @<%= @parent_attribute.name %>.id
31
+ end<% end %>
32
+ end
33
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'servi_craft/destroy'
4
+ module <%= @service_module %>
5
+ # Service object to destroy the <%= file_name %>
6
+ # [Modified by] rails generate servi_craft <%= file_name %>
7
+ # [Last modified] <%= Date.today.to_s %>
8
+ class <%= @service_class_name %> < ServiCraft::Destroy
9
+ end
10
+ end
11
+
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module <%= @service_module %>
4
+ # Service object to get info a record of <%= file_name.singularize.underscore %>.
5
+ # [Modified by] rails generate servi_craft <%= file_name %>
6
+ # [Last modified] <%= Date.today.to_s %>
7
+ class <%= @service_class_name %>
8
+ # Set a record of <%= file_name.singularize.underscore %>.
9
+ # [Modified by] rails generate servi_craft <%= file_name %>
10
+ # [Last modified] <%= Date.today.to_s %>
11
+ def initialize(<%= file_name.singularize.underscore %>)
12
+ @<%= file_name.singularize.underscore %> = <%= file_name.singularize.underscore %>
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'servi_craft/query'
4
+ module <%= @service_module %>
5
+ # Service object to query <%= file_name.pluralize.underscore %>.
6
+ # [Modified by] rails generate servi_craft <%= file_name %>
7
+ # [Last modified] <%= Date.today.to_s %>
8
+ class <%= @service_class_name %> < ServiCraft::Query
9
+ def initialize(base = <%= @service_model %>.all, page: 1, rows: nil)
10
+ super(base, page:, rows:)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'servi_craft/update'
4
+ module <%= @service_module %>
5
+ # Service object to update the <%= file_name %>
6
+ # [Modified by] rails generate servi_craft <%= file_name %>
7
+ # [Last modified] <%= Date.today.to_s %>
8
+ class <%= @service_class_name %> < ServiCraft::Update
9
+ end
10
+ end
11
+
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'echo_craft/service_objects/create'
3
4
  module ServiCraft
4
5
  # CreateRecordService
5
6
  class Create
6
- require 'echo_craft/service_objects/create'
7
7
 
8
8
  attr_reader :model, :record, :params, :response
9
9
 
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'echo_craft/service_objects/destroy'
3
4
  module ServiCraft
4
5
  # Destroy Record Service
5
6
  class Destroy
6
- require 'echo_craft/service_objects/destroy'
7
7
 
8
8
  def initialize(record)
9
9
  @record = record
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'echo_craft/service_objects/update'
3
4
  module ServiCraft
4
5
  # UpdateRecordService
5
6
  class Update
6
- require 'echo_craft/service_objects/update'
7
7
 
8
8
  attr_reader :model, :record, :params, :response
9
9
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ServiCraft
4
- VERSION = "0.1.0"
4
+ VERSION = '0.1.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: servi-craft
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcos Chuquicondor
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-25 00:00:00.000000000 Z
11
+ date: 2024-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: echo-craft
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: model-ancestry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '7.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '7.0'
27
55
  description: Manage Ruby Service Objects.
28
56
  email:
29
57
  - marcos@chuquicondor.com
@@ -31,6 +59,12 @@ executables: []
31
59
  extensions: []
32
60
  extra_rdoc_files: []
33
61
  files:
62
+ - lib/generators/servi_craft/servi_craft_generator.rb
63
+ - lib/generators/servi_craft/templates/create.template
64
+ - lib/generators/servi_craft/templates/destroy.template
65
+ - lib/generators/servi_craft/templates/info.template
66
+ - lib/generators/servi_craft/templates/query.template
67
+ - lib/generators/servi_craft/templates/update.template
34
68
  - lib/servi_craft.rb
35
69
  - lib/servi_craft/create.rb
36
70
  - lib/servi_craft/destroy.rb