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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fed54b60a2214a055f3474738ac23e5401b54a9ee06cb52152f2108c3f67f123
4
- data.tar.gz: 4ee0f470feb5f30d8a06a61473511f1423e0dd29dc193ab47ee5bb843587c97a
3
+ metadata.gz: a39ffa29f651ad914316824a2004228aedff537a369a0704ce5bc34c2b0b31e9
4
+ data.tar.gz: 552c59f30efcf68a28e7bb4c0a85b96617980c50a22deaca2e06bb796984b21f
5
5
  SHA512:
6
- metadata.gz: 27750f3692d4f2fd445b9ecd24af55a3d869d3efee94bbc878c8af729fcd7615b368443f2795e239a0c58a865784cb7d25558f286d9164f316c63eab834ac06a
7
- data.tar.gz: f0100b431053467725d7b72e32631fb4dd3212d76b5bc6bdd26e01477769f744141a5cbf8fde5ae393ed0704bda47827d77e68b64246b331da541acec8154cf9
6
+ metadata.gz: 65d804ef525ed2e1f7d8c31baad5ef935a3e107f9f2e3973e42f362ab1bd502548233ade01aadb8cbb7f9cc4313e9374f0166de07a213b4f6ed9d3f5390e0629
7
+ data.tar.gz: 5d171075e1734350034e82eddbbb7d6484539173aa9387dd7aac4d148af831c73f1835a937ee4663520ac6702afc71b74dd86b992164e260c6ac328bfa6a893b
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Domino
4
- VERSION = "0.2.9.2"
4
+ VERSION = "0.2.9.4"
5
5
  end
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:)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-domino
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9.2
4
+ version: 0.2.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - kiebor81