db2_query 0.3.7 → 0.3.8

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: 15218013893ba937f84cb4d9d11b1a6730b93fd5fbe8b9ff8cccf9a233a2a9cc
4
- data.tar.gz: 308a3c04b923f18b0ec03d460dd0db50fa690a08d7a5a170a48811b1794529b6
3
+ metadata.gz: 9eabc77ee406196782e5a07a95a7e821d169ec98b865443c7c7450f337d09d5e
4
+ data.tar.gz: 84089fa859c9777a38d3b8698b4789993b5769fcc13d6ba093202d68cd9f6456
5
5
  SHA512:
6
- metadata.gz: 6d8509a82c8ccde64f8ce4aec2b8415664be920249dcaff20a61795e84f8ee9b19220f10a4e07bf2367c9e70a1e69a1c4e3011f2cc1775861c69ee35d1176d3c
7
- data.tar.gz: 425983ab6752bca8d3f8a0462e09b08e0a5367795b03df6a31a27b69bc8221551c2ae4680c004ad0db0f3e7a6b66201596cd959ac6494b010644ddf834670449
6
+ metadata.gz: e83b1e40ff7e6e949657aadbdedebdbd106f8ddb6f5143fee15b94b655b4c7306a80025d5884c81b3d0a1092ac058241c2c9cd0092318dec131a863567b7b5d8
7
+ data.tar.gz: 6d1c87212f770d85f5657744b7ddbca5d6b09e3ff903b227651f6b33915a586bbf5ce7ac00924923bae13a024434b219dae606a65deaebe4ff857e5d84f8153d
@@ -1,3 +1,3 @@
1
1
  module Db2Query
2
- VERSION = "0.3.7"
2
+ VERSION = "0.3.8"
3
3
  end
@@ -0,0 +1,15 @@
1
+ Description:
2
+ Stubs out a new query. Pass the query name, either
3
+ CamelCased or under_scored, and an optional list of its methods as arguments.
4
+
5
+ To create a query within a module, just use namespace pattern as the other rails generators do.
6
+
7
+ To create query class methods, you can use 3 options:
8
+ 1. Plain SQL methods --defines
9
+ 2. Query Methods with SQL string, --queries
10
+ 3. Query Methods with lambda, --lambdas
11
+
12
+ Example:
13
+ $ rails g query NameSpace::Name --queries query_1 --defines query_2 --lambdas query_3
14
+ create app/queries/name_space/name_query.rb
15
+ create test/queries/name_space/name_query_test.rb
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators"
4
+ require "fileutils"
5
+
6
+ module Rails
7
+ module Generators
8
+ class QueryGenerator < Rails::Generators::NamedBase
9
+ source_root File.expand_path("../templates", __FILE__)
10
+
11
+ class_option :skip_unit_test, type: :boolean, default: false, desc: "Skip unit test file creation"
12
+ class_option :defines, type: :array, default: [], desc: "Plain query method options"
13
+ class_option :queries, type: :array, default: [], desc: "Query method SQL options"
14
+ class_option :lambdas, type: :array, default: [], desc: "Query method with callable args"
15
+
16
+ def create_query_file
17
+ template "query.rb", File.join("app/queries", class_path, "#{file_name}_query.rb")
18
+ end
19
+
20
+ def create_query_definitions_file
21
+ template "query_definitions.rb", File.join("app/queries/definitions", class_path, "#{file_name}_query_definitions.rb")
22
+ end
23
+
24
+ def create_query_test_file
25
+ unless options[:skip_unit_test]
26
+ template "unit_test.rb", File.join("test/queries", class_path, "#{file_name}_query_test.rb")
27
+ end
28
+ end
29
+
30
+ private
31
+ def assign_names!(name)
32
+ super(name)
33
+ @method_options = options.slice("defines", "queries", "lambdas")
34
+ @query_methods = @method_options.map { |key, val| val }.flatten
35
+ end
36
+
37
+ def query_class_name
38
+ "#{file_name.camelize}Query"
39
+ end
40
+
41
+ def namespaced_query?
42
+ !class_path.empty?
43
+ end
44
+
45
+ def namespaced_names
46
+ class_path
47
+ end
48
+
49
+ def namespaced_content(content)
50
+ namespaced_names.reverse_each do |namespace_name|
51
+ content = "module #{namespace_name.camelize}\n#{indent(content)}\nend"
52
+ end
53
+ content
54
+ end
55
+
56
+ def module_namespacing(&block)
57
+ content = capture(&block)
58
+ content = namespaced_content(content) if namespaced_query?
59
+ concat(content)
60
+ end
61
+
62
+ def module_definitions_namespacing(&block)
63
+ content = capture(&block)
64
+ content = namespaced_content(content) if namespaced_query?
65
+ definitions_namespace_content = "module Definitions\n#{indent(content)}\nend"
66
+ concat(definitions_namespace_content)
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ <% module_namespacing do -%>
4
+ class <%= query_class_name %> < <%= "Db2Query::Base" -%>
5
+ <% if @query_methods.empty? %>
6
+ <%= indent("query :to_do, <<-SQL\n") %>
7
+ <%= indent("SQL\n") %>
8
+ <%= indent("def to_do_sql\n") %>
9
+ <%= indent("end") %>
10
+ <% end -%>
11
+ <% @method_options.each do |key, val| -%>
12
+ <% val.each_with_index do |option, index| -%>
13
+ <% case key when 'defines' -%>
14
+ <%= indent("def #{option}_sql\n") %>
15
+ <%= indent("end") %>
16
+ <% when 'queries' %>
17
+ <%= indent("query :#{option}, <<-SQL\n") %>
18
+ <%= indent("SQL") %>
19
+ <% when 'lambdas' %>
20
+ <%= indent("query :#{option}, -> args {\n") %>
21
+ <%= indent("}") %>
22
+ <% end -%>
23
+ <% end -%>
24
+ <% end -%>
25
+ <%= 'end' -%>
26
+ <% end %>
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ <% module_definitions_namespacing do -%>
4
+ class <%= query_class_name %>Definitions < <%= "Db2Query::Definitions" %>
5
+ <% if @query_methods.empty? %>
6
+ <%= indent("def describe\n") -%>
7
+ <%= indent("") %>
8
+ <%= indent("end") %>
9
+ <% else %>
10
+ <%= indent("def describe") -%>
11
+ <% @query_methods.each do |method| %>
12
+ <%= indent("query_definition :#{method} do |c|\n") %>
13
+ <%= indent("end") %>
14
+ <% end -%>
15
+ <%= indent("end") %>
16
+ <% end %>
17
+ <%= 'end' -%>
18
+ <% end %>
@@ -0,0 +1,9 @@
1
+ require "test_helper"
2
+
3
+ <% module_namespacing do -%>
4
+ class <%= query_class_name %>Test < ActiveSupport::TestCase
5
+ # test "the truth" do
6
+ # assert true
7
+ # end
8
+ <%= 'end' -%>
9
+ <% end %>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: db2_query
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yohanes Lumentut
@@ -125,6 +125,11 @@ files:
125
125
  - lib/db2_query/type/timestamp.rb
126
126
  - lib/db2_query/type/value.rb
127
127
  - lib/db2_query/version.rb
128
+ - lib/generators/query/USAGE
129
+ - lib/generators/query/query_generator.rb
130
+ - lib/generators/query/templates/query.rb.tt
131
+ - lib/generators/query/templates/query_definitions.rb.tt
132
+ - lib/generators/query/templates/unit_test.rb.tt
128
133
  - lib/tasks/database.rake
129
134
  - lib/tasks/init.rake
130
135
  - lib/tasks/initializer.rake