rider-kick 0.0.4 → 0.0.6

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: ca2aedb4749c52fc2cf24c4ab16564c3bb334eca159e674b4e0ce2e1b138af7c
4
- data.tar.gz: d48958c8210c77dc852a9a9f7ccb51c1a439848e7397581be5e8546929a1153b
3
+ metadata.gz: cbec18d4669bd7258d0e65f0906d7f07221effe04491ec2058d8fa668a6910eb
4
+ data.tar.gz: 27ef02db28f619ebdc203220c8feea863520ae2dbdb6297a579f8c8675bd1bae
5
5
  SHA512:
6
- metadata.gz: a3b44f67e107355e1cb5f6c56df0e071393c612d5b5e36d6b8cba84f7cefb36570c9ef4d0b4e38df94ee6ee5eca1a66f2bca03bfaacc812cffb466c490b01b79
7
- data.tar.gz: fc8999432b430ddc353aad9d64f459acbb8974ae42ee824928f4821358e1c1ea98a6531322cec9fa10e75f8f98eca4a93f5791edd4ba689d4fe2592298b4ff38
6
+ metadata.gz: ef2ddbd9b1ea1fd2bdfa16a5e37081e36010c102f842355a0bb0d2516ad9dbfb0b6b9fbce6b4a21ac0918c0f3cc8caf10b7bc2ff425e9e059c3014054e2d2100
7
+ data.tar.gz: 70712252956a3c89d23d215d1d692808f6d796b81b4770756016e505a048cecbf7d6bd68b2bb4527433353ba21cc726e68761ea15ec0b94e01672b306512f6d2
@@ -5,5 +5,5 @@ Description:
5
5
  Example:
6
6
  To Generate scaffold:
7
7
  bin/rails generate rider_kick:clean_arch --setup
8
- bin/rails generate rider_kick:structure Models::User actor:owner
8
+ bin/rails generate rider_kick:structure Models::User actor:owner uploaders:asset,images
9
9
  bin/rails generate rider_kick:scaffold users scope:dashboard
@@ -38,6 +38,7 @@ module RiderKick
38
38
  entity = @structure.entity || {}
39
39
 
40
40
  @actor = @structure.actor
41
+ @resource_owner_id = @structure.resource_owner_id
41
42
  @uploaders = @structure.uploaders || []
42
43
  @search_able = @structure.search_able || []
43
44
  @services = @structure.domains || {}
@@ -83,6 +84,10 @@ module RiderKick
83
84
  }
84
85
  end
85
86
 
87
+ def is_singular?(str)
88
+ str.singularize == str
89
+ end
90
+
86
91
  def generate_files(action, suffix = '')
87
92
  use_case_filename = build_usecase_filename(action, suffix)
88
93
  repository_filename = build_repository_filename(action, suffix)
@@ -3,7 +3,7 @@ module RiderKick
3
3
  source_root File.expand_path('templates', __dir__)
4
4
 
5
5
  argument :arg_model_name, type: :string, default: '', banner: 'Models::Name'
6
- argument :arg_settings, type: :hash, default: '', banner: 'route_scope:dashboard actor:user uploader_filed:assets,images,picture,document'
6
+ argument :arg_settings, type: :hash, default: '', banner: 'route_scope:dashboard actor:user uploaders:assets,images,picture,document'
7
7
 
8
8
  def generate_use_case
9
9
  validation!
@@ -56,6 +56,10 @@ module RiderKick
56
56
  }
57
57
  end
58
58
 
59
+ def is_singular?(str)
60
+ str.singularize == str
61
+ end
62
+
59
63
  def generate_files(action)
60
64
  template 'db/structures/example.yaml.tt', File.join("db/structures/#{action}_structure.yaml")
61
65
  end
@@ -69,8 +73,8 @@ module RiderKick
69
73
  end
70
74
 
71
75
  def uploaders
72
- return [] unless arg_settings['uploader_filed'].present?
73
- arg_settings['uploader_filed'].split(',').map(&:strip)
76
+ return [] unless arg_settings['uploaders'].present?
77
+ arg_settings['uploaders'].split(',').map(&:strip)
74
78
  end
75
79
  end
76
80
  end
@@ -1,5 +1,6 @@
1
1
  model: <%= @model_class %>
2
2
  resource_name: <%= @scope_path %>
3
+ resource_owner_id: <%= @resource_owner_id %>
3
4
  actor: <%= @actor %>
4
5
  fields:
5
6
  <% @model_class.columns.each do |field| -%>
@@ -36,8 +37,13 @@ controllers:
36
37
  type: string
37
38
  <% end -%>
38
39
  <% (@uploaders).each do |field| -%>
40
+ <% if is_singular?(field) -%>
39
41
  - name: <%= field %>
40
42
  type: file
43
+ <% else -%>
44
+ - name: <%= field %>
45
+ type: files
46
+ <% end -%>
41
47
  <% end -%>
42
48
  domains:
43
49
  action_list:
@@ -54,7 +60,11 @@ domains:
54
60
  <% column_type = get_column_type(field) -%>
55
61
  <% dry_type = @type_mapping[column_type.to_s] || ':string' -%>
56
62
  <% if @uploaders.include?(field) -%>
63
+ <% if is_singular?(field) -%>
57
64
  - optional(:<%= field %>).maybe(<%= dry_type %>)
65
+ <% else -%>
66
+ - optional(:<%= field %>).maybe(:array)
67
+ <% end -%>
58
68
  <% else -%>
59
69
  - required(:<%= field %>).filled(<%= dry_type %>)
60
70
  <% end -%>
@@ -67,7 +77,11 @@ domains:
67
77
  <% column_type = get_column_type(field) -%>
68
78
  <% dry_type = @type_mapping[column_type.to_s] || ':string' -%>
69
79
  <% if @uploaders.include?(field) -%>
80
+ <% if is_singular?(field) -%>
70
81
  - optional(:<%= field %>).maybe(<%= dry_type %>)
82
+ <% else -%>
83
+ - optional(:<%= field %>).maybe(:array)
84
+ <% end -%>
71
85
  <% else -%>
72
86
  - optional(:<%= field %>).maybe(<%= dry_type %>)
73
87
  <% end -%>
@@ -2,13 +2,24 @@
2
2
 
3
3
  class Core::Builders::<%= @subject_class %> < RiderKick::Builders::AbstractActiveRecordEntityBuilder
4
4
  acts_as_builder_for_entity Core::Entities::<%= @subject_class%>
5
+
5
6
  <% if @uploaders.present? -%>
6
7
  def attributes_for_entity
7
8
  {
8
- <% @uploaders.each_with_index do |upload, index| -%>
9
- <%= upload %>: (Rails.application.routes.url_helpers.polymorphic_url(params.<%= upload %>) rescue '')<%= ',' if index < @uploaders.size - 1 %>
9
+ <% @uploaders.each_with_index do |field, index| -%>
10
+ <% if is_singular?(field) -%>
11
+ <%= field %>: (Rails.application.routes.url_helpers.polymorphic_url(params.<%= field %>) rescue '')<%= ',' if index < @uploaders.size - 1 %>
12
+ <% else -%>
13
+ <%= field %>: build_assets(params.<%= field %>)<%= ',' if index < @uploaders.size - 1 %>
14
+ <% end -%>
10
15
  <% end -%>
11
16
  }
12
17
  end
18
+
19
+ private
20
+
21
+ def build_assets(assets)
22
+ assets.to_a.map { |asset| Rails.application.routes.url_helpers.polymorphic_url(asset) rescue '' }.compact
23
+ end
13
24
  <% end -%>
14
25
  end
@@ -5,7 +5,7 @@ class Core::Builders::Pagination < RiderKick::Builders::AbstractActiveRecordEnti
5
5
 
6
6
  def attributes_for_entity
7
7
  {
8
- total_count: params[:count],
8
+ total_count: params.count,
9
9
  page: params.page,
10
10
  per_page: params.limit,
11
11
  page_count: params.last
@@ -4,6 +4,14 @@ class Core::Entities::<%= @subject_class %> < Dry::Struct
4
4
  <% (['id'] + @fields + @uploaders + ['created_at', 'updated_at']).each do |field| -%>
5
5
  <% column_type = get_column_type(field) -%>
6
6
  <% dry_type = @entity_type_mapping[column_type.to_s] || 'Types::Strict::String' -%>
7
+ <% if @uploaders.include?(field) -%>
8
+ <% if is_singular?(field) -%>
9
+ attribute :<%= field %>, Types::Strict::String
10
+ <% else -%>
11
+ attribute :<%= field %>, Types::Strict::Array
12
+ <% end -%>
13
+ <% else -%>
7
14
  attribute :<%= field %>, <%= dry_type %>
8
15
  <% end -%>
16
+ <% end -%>
9
17
  end
@@ -1,12 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Core::Repositories::<%= @scope_class %>::<%= @repository_class %> < Core::Repositories::AbstractRepository
4
- def initialize(id:)
5
- @id = id
4
+ def initialize(params:)
5
+ @id = params.id
6
6
  end
7
7
 
8
8
  def call(builder: true)
9
+ <% if @resource_owner_id.present? -%>
10
+ resource = <%= @model_class %>.find_by(id: @id, <%=@resource_owner_id%>: @params.<%=@resource_owner_id%>)
11
+ <% else -%>
9
12
  resource = <%= @model_class %>.find_by(id: @id)
13
+ <% end -%>
10
14
  return Failure '<%= @subject_class %> not found' unless resource.present?
11
15
  unless resource.destroy
12
16
  return Failure build_errors(resource)
@@ -1,12 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Core::Repositories::<%= @scope_class %>::<%= @repository_class %> < Core::Repositories::AbstractRepository
4
- def initialize(id:)
5
- @id = id
4
+ def initialize(params:)
5
+ @params = params
6
+ @id = @params.id
6
7
  end
7
8
 
8
9
  def call(builder: true)
10
+ <% if @resource_owner_id.present? -%>
11
+ resource = <%= @model_class %>.find_by(id: @id, <%=@resource_owner_id%>: @params.<%=@resource_owner_id%>)
12
+ <% else -%>
9
13
  resource = <%= @model_class %>.find_by(id: @id)
14
+ <% end -%>
10
15
  return Failure '<%= @subject_class %> not found' unless resource.present?
11
16
  Success Core::Builders::<%= @subject_class %>.new(resource).build
12
17
  end
@@ -7,11 +7,15 @@ class Core::Repositories::<%= @scope_class %>::<%= @repository_class%> < Core::R
7
7
  end
8
8
 
9
9
  def call(builder: true)
10
+ <% if @resource_owner_id.present? -%>
11
+ resources = <%= @model_class %>.where(<%=@resource_owner_id%>: @params.<%=@resource_owner_id%>)
12
+ <% else -%>
10
13
  resources = <%= @model_class %>
14
+ <% end -%>
11
15
  if @search.present?
12
16
  resources = resources.where('<%= @search_able.map { |field| "LOWER(#{field}) LIKE :search" }.join(' OR ')%>', search: "%#{search}%")
13
17
  end
14
- return Success [] unless resources.present?
18
+ return Success Success Hashie::Mash.new(response: [], meta: {}) unless resources.present?
15
19
  pagy, results = pagy(resources.order(created_at: :desc), limit: @per_page, page: @page)
16
20
  response = results.map { |result| Core::Builders::<%= @subject_class %>.new(result).build }
17
21
  Success Hashie::Mash.new(response: response, meta: paginate!(pagy))
@@ -1,13 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Core::Repositories::<%= @scope_class %>::<%= @repository_class %> < Core::Repositories::AbstractRepository
4
- def initialize(id:, params: {})
5
- @id = id
6
- @params = prepare! params, sanitize: true
4
+ def initialize(params:)
5
+ @id = params.id
6
+ @params = prepare! params.except(:id), sanitize: true
7
7
  end
8
8
 
9
9
  def call(builder: true)
10
+ <% if @resource_owner_id.present? -%>
11
+ resource = <%= @model_class %>.find_by(id: @id, <%=@resource_owner_id%>: @params.<%=@resource_owner_id%>)
12
+ <% else -%>
10
13
  resource = <%= @model_class %>.find_by(id: @id)
14
+ <% end -%>
11
15
  return Failure '<%= @subject_class %> not found' unless resource.present?
12
16
  <% if @uploaders.present? -%>
13
17
  # Remove the existing images if a new one is being uploaded
@@ -9,9 +9,6 @@ class Core::UseCases::Contract::Default
9
9
 
10
10
  def default
11
11
  Dry::Schema.Params do
12
- if @scope_owner_column.present?
13
- required(@scope_owner_column).filled(:string)
14
- end
15
12
  end
16
13
  end
17
14
  end
@@ -4,7 +4,13 @@ class Core::UseCases::<%= [@route_scope_class, @scope_class, @use_case_class].re
4
4
  contract do
5
5
  params(Core::UseCases::Contract::Default.new.call) do
6
6
  <% @contract_create.each do |field| -%>
7
+ <%if field.include?(":#{@resource_owner_id}") -%>
8
+ <% if @resource_owner_id.present? -%>
9
+ required(:<%= @resource_owner_id %>).filled(:string)
10
+ <% end -%>
11
+ <% else -%>
7
12
  <%= field %>
13
+ <% end -%>
8
14
  <% end -%>
9
15
  end
10
16
  end
@@ -4,7 +4,11 @@ class Core::UseCases::<%= [@route_scope_class, @scope_class, @use_case_class].re
4
4
  contract do
5
5
  params(Core::UseCases::Contract::Default.new.call) do
6
6
  <% @contract_destroy.each do |field| -%>
7
+ <% next if field.include?(":#{@resource_owner_id}") -%>
7
8
  <%= field %>
9
+ <% end -%>
10
+ <% if @resource_owner_id.present? -%>
11
+ required(:<%= @resource_owner_id %>).filled(:string)
8
12
  <% end -%>
9
13
  end
10
14
  end
@@ -13,6 +17,6 @@ class Core::UseCases::<%= [@route_scope_class, @scope_class, @use_case_class].re
13
17
 
14
18
  def result
15
19
  params = yield build_parameter!
16
- Core::Repositories::<%= @scope_class%>::<%= @repository_class%>.new(id: params.id).call(builder: true)
20
+ Core::Repositories::<%= @scope_class%>::<%= @repository_class%>.new(params: params).call(builder: true)
17
21
  end
18
22
  end
@@ -4,7 +4,11 @@ class Core::UseCases::<%= [@route_scope_class, @scope_class, @use_case_class].re
4
4
  contract do
5
5
  params(Core::UseCases::Contract::Default.new.call) do
6
6
  <% @contract_fetch_by_id.each do |field| -%>
7
+ <% next if field.include?(":#{@resource_owner_id}") -%>
7
8
  <%= field %>
9
+ <% end -%>
10
+ <% if @resource_owner_id.present? -%>
11
+ required(:<%= @resource_owner_id %>).filled(:string)
8
12
  <% end -%>
9
13
  end
10
14
  end
@@ -13,6 +17,6 @@ class Core::UseCases::<%= [@route_scope_class, @scope_class, @use_case_class].re
13
17
 
14
18
  def result
15
19
  params = yield build_parameter!
16
- Core::Repositories::<%= @scope_class%>::<%= @repository_class%>.new(id: params.id).call(builder: true)
20
+ Core::Repositories::<%= @scope_class%>::<%= @repository_class%>.new(params: params).call(builder: true)
17
21
  end
18
22
  end
@@ -3,7 +3,11 @@
3
3
  class Core::UseCases::<%= [@route_scope_class, @scope_class, @use_case_class].reject { |c| c.empty? }.join("::") %> < RiderKick::UseCases::AbstractUseCase
4
4
  contract do
5
5
  params(Core::UseCases::Contract::Default.new.call, Core::UseCases::Contract::Pagination.new.call) do
6
+ <% if @resource_owner_id.present? -%>
7
+ required(:<%= @resource_owner_id %>).filled(:string)
8
+ <% end -%>
6
9
  <% @contract_list.each do |field| -%>
10
+ <% next if field.include?(":#{@resource_owner_id}") %>
7
11
  <%= field %>
8
12
  <% end -%>
9
13
  end
@@ -4,7 +4,13 @@ class Core::UseCases::<%= [@route_scope_class, @scope_class, @use_case_class].re
4
4
  contract do
5
5
  params(Core::UseCases::Contract::Default.new.call) do
6
6
  <% @contract_update.each do |field| -%>
7
+ <%if field.include?(":#{@resource_owner_id}") -%>
8
+ <% if @resource_owner_id.present? -%>
9
+ required(:<%= @resource_owner_id %>).filled(:string)
10
+ <% end -%>
11
+ <% else -%>
7
12
  <%= field %>
13
+ <% end -%>
8
14
  <% end -%>
9
15
  end
10
16
  end
@@ -13,6 +19,6 @@ class Core::UseCases::<%= [@route_scope_class, @scope_class, @use_case_class].re
13
19
 
14
20
  def result
15
21
  params = yield build_parameter!
16
- Core::Repositories::<%= @scope_class%>::<%= @repository_class%>.new(id: params.id, params: params.except(:id)).call(builder: true)
22
+ Core::Repositories::<%= @scope_class%>::<%= @repository_class%>.new(params: params).call(builder: true)
17
23
  end
18
24
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RiderKick
4
- VERSION = '0.0.4'
4
+ VERSION = '0.0.6'
5
5
  public_constant :VERSION
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rider-kick
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kotaro Minami
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-11-21 00:00:00.000000000 Z
11
+ date: 2024-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-matcher
@@ -225,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
225
225
  - !ruby/object:Gem::Version
226
226
  version: '0'
227
227
  requirements: []
228
- rubygems_version: 3.5.22
228
+ rubygems_version: 3.5.23
229
229
  signing_key:
230
230
  specification_version: 4
231
231
  summary: Clean Architecture Framework.