rider-kick 0.0.5 → 0.0.7
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 +4 -4
- data/lib/generators/rider_kick/USAGE +1 -1
- data/lib/generators/rider_kick/scaffold_generator.rb +5 -0
- data/lib/generators/rider_kick/structure_generator.rb +7 -3
- data/lib/generators/rider_kick/templates/db/structures/example.yaml.tt +14 -0
- data/lib/generators/rider_kick/templates/domains/core/builders/builder.rb.tt +13 -2
- data/lib/generators/rider_kick/templates/domains/core/entities/entity.rb.tt +8 -0
- data/lib/generators/rider_kick/templates/domains/core/repositories/destroy.rb.tt +6 -2
- data/lib/generators/rider_kick/templates/domains/core/repositories/fetch_by_id.rb.tt +7 -2
- data/lib/generators/rider_kick/templates/domains/core/repositories/list.rb.tt +5 -1
- data/lib/generators/rider_kick/templates/domains/core/repositories/update.rb.tt +7 -3
- data/lib/generators/rider_kick/templates/domains/core/use_cases/contract/default.rb.tt +0 -3
- data/lib/generators/rider_kick/templates/domains/core/use_cases/create.rb.tt +6 -0
- data/lib/generators/rider_kick/templates/domains/core/use_cases/destroy.rb.tt +5 -1
- data/lib/generators/rider_kick/templates/domains/core/use_cases/fetch_by_id.rb.tt +5 -1
- data/lib/generators/rider_kick/templates/domains/core/use_cases/list.rb.tt +4 -0
- data/lib/generators/rider_kick/templates/domains/core/use_cases/update.rb.tt +7 -1
- data/lib/rider_kick/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cad018e49d8527dc8362c19bedafb5d4403afdf5e9b3b26b7da6cd70eba50da
|
4
|
+
data.tar.gz: 608e4a29c825e66967aa6dbde8f8a8f7295c85cad5d635225fd414e8a78d25ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93e08abca79bcd918fee994f97a5e918ef61b8f2041dad5f937a2df16ff9f2df07c1249a95175646d42e8bf65d8b02928255f8b753a53c1a4b7dd8fa302b8e4e
|
7
|
+
data.tar.gz: bd7677729b7651e10225b4993104aa23abe2b4b193fb674266334e15dc58d76da637b59ae2bb752b2869cd6da7426c5f75509d659e86f9b68c00b2f2be6949d4
|
@@ -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
|
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['
|
73
|
-
arg_settings['
|
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 |
|
9
|
-
|
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
|
@@ -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(
|
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(
|
5
|
-
@
|
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(
|
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
|
@@ -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
|
+
<% else -%>
|
7
11
|
<%= field %>
|
12
|
+
<% end -%>
|
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.eql?(":#{@resource_owner_id}") -%>
|
7
8
|
<%= field %>
|
9
|
+
<% if @resource_owner_id.present? -%>
|
10
|
+
required(:<%= @resource_owner_id %>).filled(:string)
|
11
|
+
<% end -%>
|
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(
|
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.eql?(":#{@resource_owner_id}") -%>
|
7
8
|
<%= field %>
|
9
|
+
<% if @resource_owner_id.present? -%>
|
10
|
+
required(:<%= @resource_owner_id %>).filled(:string)
|
11
|
+
<% end -%>
|
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(
|
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
|
+
<% else -%>
|
7
11
|
<%= field %>
|
12
|
+
<% end -%>
|
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(
|
22
|
+
Core::Repositories::<%= @scope_class%>::<%= @repository_class%>.new(params: params).call(builder: true)
|
17
23
|
end
|
18
24
|
end
|
data/lib/rider_kick/version.rb
CHANGED
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
|
+
version: 0.0.7
|
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-
|
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.
|
228
|
+
rubygems_version: 3.5.23
|
229
229
|
signing_key:
|
230
230
|
specification_version: 4
|
231
231
|
summary: Clean Architecture Framework.
|