rails-domino 0.2.9.2 → 0.2.9.4
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/domino/scaffolder.rb +36 -1
- data/lib/domino/version.rb +1 -1
- data/lib/domino.rb +7 -0
- data/lib/generators/domino/domino_generator.rb +12 -1
- data/lib/generators/domino/templates/controller.rb.tt +1 -1
- data/lib/generators/domino/templates/service.rb.tt +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a39ffa29f651ad914316824a2004228aedff537a369a0704ce5bc34c2b0b31e9
|
4
|
+
data.tar.gz: 552c59f30efcf68a28e7bb4c0a85b96617980c50a22deaca2e06bb796984b21f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65d804ef525ed2e1f7d8c31baad5ef935a3e107f9f2e3973e42f362ab1bd502548233ade01aadb8cbb7f9cc4313e9374f0166de07a213b4f6ed9d3f5390e0629
|
7
|
+
data.tar.gz: 5d171075e1734350034e82eddbbb7d6484539173aa9387dd7aac4d148af831c73f1835a937ee4663520ac6702afc71b74dd86b992164e260c6ac328bfa6a893b
|
data/lib/domino/scaffolder.rb
CHANGED
@@ -35,8 +35,13 @@ module Domino
|
|
35
35
|
|
36
36
|
def run
|
37
37
|
generate_model_file if @generate_model
|
38
|
+
|
38
39
|
generate_file("repository")
|
40
|
+
register_dependency("#{@file_name}_repository", "#{@model_name}Repository")
|
41
|
+
|
39
42
|
generate_file("service")
|
43
|
+
register_dependency("#{@file_name}_service", "#{@model_name}Service")
|
44
|
+
|
40
45
|
generate_file("blueprint")
|
41
46
|
generate_file("controller")
|
42
47
|
end
|
@@ -48,7 +53,27 @@ module Domino
|
|
48
53
|
end
|
49
54
|
|
50
55
|
def column_args
|
51
|
-
@columns.map { |col| "#{col.name}:#{col.sql_type}" unless col.name == "id" }.compact
|
56
|
+
# @columns.map { |col| "#{col.name}:#{col.sql_type}" unless col.name == "id" }.compact
|
57
|
+
@columns.map do |col|
|
58
|
+
next if col.name == "id"
|
59
|
+
|
60
|
+
rails_type = map_sql_type(col.sql_type)
|
61
|
+
"#{col.name}:#{rails_type}" if rails_type
|
62
|
+
end.compact
|
63
|
+
end
|
64
|
+
|
65
|
+
def map_sql_type(sql_type) # rubocop:disable Metrics/MethodLength
|
66
|
+
case sql_type
|
67
|
+
when /nvarchar|varchar|text/ then "string"
|
68
|
+
when /int/ then "integer"
|
69
|
+
when /timestamp/ then "datetime"
|
70
|
+
when /bool/ then "boolean"
|
71
|
+
when /decimal|numeric/ then "decimal"
|
72
|
+
when /date/ then "date"
|
73
|
+
else
|
74
|
+
puts "Warning: unknown SQL type #{sql_type}, skipping."
|
75
|
+
nil
|
76
|
+
end
|
52
77
|
end
|
53
78
|
|
54
79
|
def generate_file(type) # rubocop:disable Metrics/MethodLength
|
@@ -78,5 +103,15 @@ module Domino
|
|
78
103
|
FileUtils.mkdir_p(folder)
|
79
104
|
File.write(File.join(folder, filename), content)
|
80
105
|
end
|
106
|
+
|
107
|
+
def register_dependency(key, class_name)
|
108
|
+
init_file = Rails.root.join("config/initializers/domino_container.rb")
|
109
|
+
line = "Domino::Container.register(\"#{key}\", -> { #{class_name}.new })"
|
110
|
+
|
111
|
+
FileUtils.mkdir_p(File.dirname(init_file))
|
112
|
+
return if File.exist?(init_file) && File.read(init_file).include?(line)
|
113
|
+
|
114
|
+
File.write(init_file, "#{line}\n", mode: "a")
|
115
|
+
end
|
81
116
|
end
|
82
117
|
end
|
data/lib/domino/version.rb
CHANGED
data/lib/domino.rb
CHANGED
@@ -4,7 +4,14 @@ require "domino/version"
|
|
4
4
|
require "domino/scaffolder"
|
5
5
|
require "domino/railtie"
|
6
6
|
|
7
|
+
require "dry/auto_inject"
|
8
|
+
require "dry/container"
|
9
|
+
|
7
10
|
module Domino # rubocop:disable Style/Documentation
|
11
|
+
Container = Dry::Container.new
|
12
|
+
|
13
|
+
Import = Dry::AutoInject(Container)
|
14
|
+
|
8
15
|
def self.scaffold(**kwargs)
|
9
16
|
Scaffolder.scaffold(**kwargs)
|
10
17
|
end
|
@@ -15,7 +15,6 @@ class DominoGenerator < Rails::Generators::NamedBase # rubocop:disable Style/Doc
|
|
15
15
|
@model_name = class_name
|
16
16
|
@file_name = file_name
|
17
17
|
@plural_file_name = file_name.pluralize
|
18
|
-
# @fields = attributes.map { |a| a.split(":").first }.reject { |f| f == "id" }
|
19
18
|
@fields = attributes.map(&:name).reject { |f| f == "id" }
|
20
19
|
end
|
21
20
|
|
@@ -27,10 +26,12 @@ class DominoGenerator < Rails::Generators::NamedBase # rubocop:disable Style/Doc
|
|
27
26
|
|
28
27
|
def create_service
|
29
28
|
template "service.rb.tt", File.join("app/services", "#{@file_name}_service.rb")
|
29
|
+
register_dependency("#{@file_name}_service", "#{@model_name}Service")
|
30
30
|
end
|
31
31
|
|
32
32
|
def create_repository
|
33
33
|
template "repository.rb.tt", File.join("app/repositories", "#{@file_name}_repository.rb")
|
34
|
+
register_dependency("#{@file_name}_repository", "#{@model_name}Repository")
|
34
35
|
end
|
35
36
|
|
36
37
|
def create_blueprint
|
@@ -40,4 +41,14 @@ class DominoGenerator < Rails::Generators::NamedBase # rubocop:disable Style/Doc
|
|
40
41
|
def create_controller
|
41
42
|
template "controller.rb.tt", File.join("app/controllers", "#{@plural_file_name}_controller.rb")
|
42
43
|
end
|
44
|
+
|
45
|
+
def register_dependency(key, class_name)
|
46
|
+
init_file = Rails.root.join("config/initializers/domino_container.rb")
|
47
|
+
line = "Domino::Container.register(\"#{key}\", -> { #{class_name}.new })"
|
48
|
+
|
49
|
+
FileUtils.mkdir_p(File.dirname(init_file))
|
50
|
+
return if File.exist?(init_file) && File.read(init_file).include?(line)
|
51
|
+
|
52
|
+
File.write(init_file, "#{line}\n", mode: "a")
|
53
|
+
end
|
43
54
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# Controller for <%= @model_name.pluralize %> API endpoints.
|
2
2
|
#
|
3
3
|
class <%= @model_name.pluralize %>Controller < ApplicationController
|
4
|
-
include Import['<%= @model_name.underscore %>_service']
|
4
|
+
include Domino::Import['<%= @model_name.underscore %>_service']
|
5
5
|
|
6
6
|
# GET /<%= @plural_file_name %>
|
7
7
|
# @return [JSON]
|
@@ -5,7 +5,7 @@
|
|
5
5
|
# result = service.get(1)
|
6
6
|
#
|
7
7
|
class <%= @model_name %>Service < BaseService
|
8
|
-
include Import['<%= @model_name.underscore %>_repository']
|
8
|
+
include Domino::Import['<%= @model_name.underscore %>_repository']
|
9
9
|
|
10
10
|
# @param <%= @file_name %>_repository [<%= @model_name %>Repository]
|
11
11
|
def initialize(<%= @model_name.underscore %>_repository:)
|