servi-craft 0.1.1 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5fbf77e0721349aaeb86bea0167b4111a5e9d5727a21acd6514bad5d21335cc7
4
- data.tar.gz: 328c815ab670e14da3e30f5489c9acc14ce6ed9a7ed04e4f469192538485e487
3
+ metadata.gz: 147fcedf08785f0ecf475bbd156a210eadbd602a0b874f8aa14c59eab55f41fc
4
+ data.tar.gz: 113b02dc2b1ce00dee1eab7716ef900873e603eb32dba0e701f957727d847387
5
5
  SHA512:
6
- metadata.gz: 318907d222c06a838f00a2e225c8827c18d72491c270b6173dc66cd62e1f59f11163adce7d768705c668a95fa0da5114a92db32e6db069f3b965f5d71a67ba33
7
- data.tar.gz: 8a848e8afe3c4832b7ab3d218f59522d82b3fd8d64ceb853e8c32b0b715788d592513d3ee0a24e5e50c37f77042a2af6907d22554c7e03027acd298189741b4e
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,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ServiCraft
4
- VERSION = '0.1.1'
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.1
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