servi-craft 0.1.1 → 0.1.3

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: 5fbf77e0721349aaeb86bea0167b4111a5e9d5727a21acd6514bad5d21335cc7
4
- data.tar.gz: 328c815ab670e14da3e30f5489c9acc14ce6ed9a7ed04e4f469192538485e487
3
+ metadata.gz: cb702dd169b22c0910e64eb1a5360ec481e5913190a3eb5bf6e2d5dd798eb904
4
+ data.tar.gz: 1aa5568a6cb88a6ded344951d36e9c09d32bc1f788b209e7c20f70fa840c42ae
5
5
  SHA512:
6
- metadata.gz: 318907d222c06a838f00a2e225c8827c18d72491c270b6173dc66cd62e1f59f11163adce7d768705c668a95fa0da5114a92db32e6db069f3b965f5d71a67ba33
7
- data.tar.gz: 8a848e8afe3c4832b7ab3d218f59522d82b3fd8d64ceb853e8c32b0b715788d592513d3ee0a24e5e50c37f77042a2af6907d22554c7e03027acd298189741b4e
6
+ metadata.gz: 1880f6fd0729bb5f647059df9ab5d1a7c47331fb7ad5cebd781e77e9aefe7f503c1372e5a3cb84e0db6e17fbf06cd95bb3c616b6db0b70d31abc022284e7d5c7
7
+ data.tar.gz: f1103182504154a95ec7d77820561d453e4ad774590b49910a791b4f8c3ecde09365e9f670d360ea8d0cf1a74ed3c7852f17c41ba8ca93a7a52d8b0bfb95bcc6
@@ -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,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'echo_craft/service_objects/create'
4
+
4
5
  module ServiCraft
5
6
  # CreateRecordService
6
7
  class Create
7
-
8
8
  attr_reader :model, :record, :params, :response
9
9
 
10
10
  def initialize(model, params)
@@ -22,9 +22,9 @@ module ServiCraft
22
22
  before_assign_attributes.call
23
23
  @record = @model.new(@params)
24
24
  before_create.call
25
- process_record_create @record.save, after_successful_create:, after_failed_create:
25
+ process_record_create(@record.save, after_successful_create: after_successful_create, after_failed_create: after_failed_create)
26
26
  rescue StandardError
27
- fail_create(after_failed_create:)
27
+ fail_create(after_failed_create: after_failed_create)
28
28
  end
29
29
  finally.call
30
30
  @response
@@ -37,7 +37,7 @@ module ServiCraft
37
37
  after_successful_create.call
38
38
  @response.created(@record)
39
39
  else
40
- fail_create(after_failed_create:)
40
+ fail_create(after_failed_create: after_failed_create)
41
41
  end
42
42
  end
43
43
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'echo_craft/service_objects/destroy'
4
+
4
5
  module ServiCraft
5
6
  # Destroy Record Service
6
7
  class Destroy
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'echo_craft/service_objects/query'
4
+
3
5
  module ServiCraft
4
6
  # Query Record Service
5
7
  class Query
@@ -7,10 +9,12 @@ module ServiCraft
7
9
  @base = base
8
10
  @page = page.to_i
9
11
  @rows = rows
12
+ @response = ::EchoCraft::ServiceObjects::Query.new(query: @base, page: @page, rows: @rows)
10
13
  end
11
14
 
12
15
  def call
13
- paginate @base
16
+ @response.list(paginate(@base))
17
+ @response
14
18
  end
15
19
 
16
20
  private
@@ -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.3'
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.3
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-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: echo-craft
@@ -16,14 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.0
19
+ version: 0.1.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.1
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
+ - - "~>"
25
39
  - !ruby/object:Gem::Version
26
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