arql 0.2.4 → 0.2.9

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: bcf50149ad9ded8d667ea9afc40dea78d432525c8c62fe4f33d0d164e02acb81
4
- data.tar.gz: a6fd83949c0c87f1d4891fae1a8fb0fa65e13a48f9e8ddb327b02f499bdbc73a
3
+ metadata.gz: 547372d219f1903fb2ea57628747977c703cc394ce0b80653c4240268f634da0
4
+ data.tar.gz: bf3b769511f63c366f97011b52cc6227fe062db18ed82171a071718b9e1ad093
5
5
  SHA512:
6
- metadata.gz: 9f73ccc2e3669a6f10fa7555737d09fadec7e0c0457c5b8819dae65055aa6a045153cce2137ccf9a9742f509d9f5c8567fd617e9f3dda7e2136935cf3686a2f3
7
- data.tar.gz: ca3d6d547e8267066d72a6e67b09012b42b2e4defa36669c8b304707dc434cd6194a84a201c0fac8d3ed3f749ca017f2b4eaba6ce1f0a3813cfab34140827bc5
6
+ metadata.gz: 387959d7154d8aa3893f9fce185b156c12302effd413ba9a3ca40749061c3cf4fa20c8352a8cc68fc0318e86cb3abbd9318ba2befd2ea42710a81aa01d47bc7f
7
+ data.tar.gz: 309295ae45053888434f888eef6fd46b881024837f8a5bb20a83d31fbf84de34b7fa06e4eada8ee714d1ce6e12f33a2fdb993d6d50f4f804eb13f70aa3f19cf8
@@ -1,10 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- arql (0.2.4)
4
+ arql (0.2.9)
5
5
  activerecord (~> 6.0.3)
6
6
  activesupport (~> 6.0.3)
7
7
  caxlsx (~> 3.0.2)
8
+ composite_primary_keys (~> 12.0.3)
8
9
  mysql2 (~> 0.5.3)
9
10
  net-ssh-gateway (~> 2.0.0)
10
11
  pry (~> 0.13.1)
@@ -19,12 +20,12 @@ PATH
19
20
  GEM
20
21
  remote: https://rubygems.org/
21
22
  specs:
22
- activemodel (6.0.3.3)
23
- activesupport (= 6.0.3.3)
24
- activerecord (6.0.3.3)
25
- activemodel (= 6.0.3.3)
26
- activesupport (= 6.0.3.3)
27
- activesupport (6.0.3.3)
23
+ activemodel (6.0.3.4)
24
+ activesupport (= 6.0.3.4)
25
+ activerecord (6.0.3.4)
26
+ activemodel (= 6.0.3.4)
27
+ activesupport (= 6.0.3.4)
28
+ activesupport (6.0.3.4)
28
29
  concurrent-ruby (~> 1.0, >= 1.0.2)
29
30
  i18n (>= 0.7, < 2)
30
31
  minitest (~> 5.1)
@@ -37,6 +38,8 @@ GEM
37
38
  nokogiri (~> 1.10, >= 1.10.4)
38
39
  rubyzip (>= 1.3.0, < 3)
39
40
  coderay (1.1.3)
41
+ composite_primary_keys (12.0.3)
42
+ activerecord (~> 6.0.0)
40
43
  concurrent-ruby (1.1.7)
41
44
  htmlentities (4.3.4)
42
45
  i18n (1.8.5)
@@ -71,11 +74,11 @@ GEM
71
74
  terminal-table (1.8.0)
72
75
  unicode-display_width (~> 1.1, >= 1.1.1)
73
76
  thread_safe (0.3.6)
74
- tzinfo (1.2.7)
77
+ tzinfo (1.2.8)
75
78
  thread_safe (~> 0.1)
76
79
  unicode-display_width (1.7.0)
77
80
  yard (0.9.25)
78
- zeitwerk (2.4.0)
81
+ zeitwerk (2.4.2)
79
82
 
80
83
  PLATFORMS
81
84
  ruby
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
29
29
  # spec.add_dependency 'activerecord-sqlserver-adapter'
30
30
  # spec.add_dependency 'activerecord-oracle_enhanced-adapter'
31
31
  spec.add_dependency 'activerecord', '~> 6.0.3'
32
+ spec.add_dependency 'composite_primary_keys', '~> 12.0.3'
32
33
  spec.add_dependency 'activesupport', '~> 6.0.3'
33
34
  spec.add_dependency 'net-ssh-gateway', '~> 2.0.0'
34
35
  spec.add_dependency 'pry', '~> 0.13.1'
@@ -22,6 +22,7 @@ module Arql
22
22
  def initialize(options)
23
23
  require 'active_support/all'
24
24
  require 'active_record'
25
+ require 'composite_primary_keys'
25
26
  require "arql/connection"
26
27
  require "arql/definition"
27
28
  @options = options
@@ -5,25 +5,29 @@ module Arql::Commands
5
5
  class << self
6
6
  def models
7
7
  t = []
8
- t << ['Table Name', 'Model Class', 'Abbr']
8
+ t << ['Table Name', 'Model Class', 'Abbr', 'Comment']
9
9
  t << nil
10
10
  Arql::Definition.models.each do |definition|
11
- t << [definition[:table], definition[:model].name, definition[:abbr] || '']
11
+ t << [definition[:table], definition[:model].name, definition[:abbr] || '', definition[:comment] || '']
12
12
  end
13
13
  t
14
14
  end
15
15
 
16
- def models_table
16
+ def models_table(regexp)
17
17
  Terminal::Table.new do |t|
18
- models.each { |row| t << (row || :separator) }
18
+ models.each_with_index { |row, idx| t << (row || :separator) if row.nil? ||
19
+ regexp.nil? ||
20
+ idx.zero? ||
21
+ row.any? { |e| e =~ regexp }
22
+ }
19
23
  end
20
24
  end
21
25
  end
22
26
  end
23
27
 
24
- Pry.commands.block_command 'm' do
28
+ Pry.commands.block_command 'm' do |regexp|
25
29
  puts
26
- puts Models::models_table
30
+ puts Models::models_table(regexp.try { |e| e.start_with?('/') ? eval(e) : Regexp.new(e) })
27
31
  end
28
32
 
29
33
  Pry.commands.alias_command 'l', 'm'
@@ -25,7 +25,7 @@ module Arql::Commands
25
25
  t << nil
26
26
  connection = ::ActiveRecord::Base.connection
27
27
  connection.columns(table_name).each do |column|
28
- pk = if column.name == connection.primary_key(table_name)
28
+ pk = if [connection.primary_key(table_name)].flatten.include?(column.name)
29
29
  'Y'
30
30
  else
31
31
  ''
@@ -83,13 +83,18 @@ module Arql
83
83
  @@models = []
84
84
  ActiveRecord::Base.connection.tap do |conn|
85
85
  conn.tables.each do |table_name|
86
+ table_comment = conn.table_comment(table_name)
86
87
  conn.primary_key(table_name).tap do |pkey|
87
88
  table_name.camelize.tap do |const_name|
88
89
  const_name = 'Modul' if const_name == 'Module'
89
90
  const_name = 'Clazz' if const_name == 'Class'
90
91
  Class.new(::ArqlModel) do
91
92
  include Arql::Extension
92
- self.primary_key = pkey
93
+ if pkey.is_a?(Array)
94
+ self.primary_keys = pkey
95
+ else
96
+ self.primary_key = pkey
97
+ end
93
98
  self.table_name = table_name
94
99
  self.inheritance_column = nil
95
100
  self.default_timezone = :local
@@ -106,16 +111,22 @@ module Arql
106
111
  end
107
112
  end.tap do |clazz|
108
113
  Object.const_set(const_name, clazz).tap do |const|
109
- const_name.gsub(/[a-z]*/, '').tap do |abbr|
110
- unless Object.const_defined?(abbr)
111
- Object.const_set abbr, const
112
- abbr_const = abbr
114
+ const_name.gsub(/[a-z]*/, '').tap do |bare_abbr|
115
+ abbr_const = nil
116
+ 9.times do |idx|
117
+ abbr = idx.zero? ? bare_abbr : "#{bare_abbr}#{idx+1}"
118
+ unless Object.const_defined?(abbr)
119
+ Object.const_set abbr, const
120
+ abbr_const = abbr
121
+ break
122
+ end
113
123
  end
114
124
 
115
125
  @@models << {
116
126
  model: const,
117
127
  abbr: abbr_const,
118
- table: table_name
128
+ table: table_name,
129
+ comment: table_comment
119
130
  }
120
131
  end
121
132
  end
@@ -135,13 +146,18 @@ module Arql
135
146
  ActiveRecord::Base.connection.tap do |conn|
136
147
  Object.const_set('ArqlModel', Class.new(ActiveRecord::Base) { self.abstract_class = true })
137
148
  conn.tables.each do |table_name|
149
+ table_comment = conn.table_comment(table_name)
138
150
  conn.primary_key(table_name).tap do |pkey|
139
151
  table_name.camelize.tap do |const_name|
140
152
  const_name = 'Modul' if const_name == 'Module'
141
153
  const_name = 'Clazz' if const_name == 'Class'
142
154
  Class.new(::ArqlModel) do
143
155
  include Arql::Extension
144
- self.primary_key = pkey
156
+ if pkey.is_a?(Array)
157
+ self.primary_keys = pkey
158
+ else
159
+ self.primary_key = pkey
160
+ end
145
161
  self.table_name = table_name
146
162
  self.inheritance_column = nil
147
163
  self.default_timezone = :local
@@ -158,16 +174,22 @@ module Arql
158
174
  end
159
175
  end.tap do |clazz|
160
176
  Object.const_set(const_name, clazz).tap do |const|
161
- const_name.gsub(/[a-z]*/, '').tap do |abbr|
162
- unless Object.const_defined?(abbr)
163
- Object.const_set abbr, const
164
- abbr_const = abbr
177
+ const_name.gsub(/[a-z]*/, '').tap do |bare_abbr|
178
+ abbr_const = nil
179
+ 9.times do |idx|
180
+ abbr = idx.zero? ? bare_abbr : "#{bare_abbr}#{idx+1}"
181
+ unless Object.const_defined?(abbr)
182
+ Object.const_set abbr, const
183
+ abbr_const = abbr
184
+ break
185
+ end
165
186
  end
166
187
 
167
188
  @@models << {
168
189
  model: const,
169
190
  abbr: abbr_const,
170
- table: table_name
191
+ table: table_name,
192
+ comment: table_comment
171
193
  }
172
194
  end
173
195
  end
@@ -15,8 +15,10 @@ class Array
15
15
 
16
16
  def t(*attrs, **options)
17
17
  if (attrs.present? || options.present? && options[:except]) && present? && first.is_a?(ActiveRecord::Base)
18
+ column_names = first.attribute_names.map(&:to_sym)
19
+ attrs = attrs.flat_map { |e| e.is_a?(Regexp) ? column_names.grep(e) : e }.uniq
18
20
  if options.present? && options[:except]
19
- attrs = first.attribute_names.map(&:to_sym) if attrs.empty?
21
+ attrs = column_names if attrs.empty?
20
22
  if options[:except].is_a?(Regexp)
21
23
  attrs.reject! { |e| e =~ options[:except] }
22
24
  else
@@ -25,7 +25,7 @@ module Kernel
25
25
  Terminal::Table.new { |t|
26
26
  t.headings = ['PK', 'Name', 'SQL Type', 'Limit', 'Precision', 'Scale', 'Default', 'Nullable', 'Comment']
27
27
  t.rows = table[:columns].map { |column|
28
- pk = if column.name == ::ActiveRecord::Base.connection.primary_key(table_name)
28
+ pk = if [::ActiveRecord::Base.connection.primary_key(table_name)].flatten.include?(column_name)
29
29
  'Y'
30
30
  else
31
31
  ''
@@ -44,7 +44,7 @@ module Kernel
44
44
  Terminal::Table.new { |t|
45
45
  t.headings = ['PK', 'Name', 'SQL Type', 'Limit', 'Precision', 'Scale', 'Default', 'Nullable', 'Comment']
46
46
  t.rows = table[:columns].map { |column|
47
- pk = if column.name == ::ActiveRecord::Base.connection.primary_key(table_name)
47
+ pk = if [::ActiveRecord::Base.connection.primary_key(table_name)].flatten.include?(column_name)
48
48
  'Y'
49
49
  else
50
50
  ''
@@ -1,3 +1,3 @@
1
1
  module Arql
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.9"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Liu Xiang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-01 00:00:00.000000000 Z
11
+ date: 2020-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mysql2
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 6.0.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: composite_primary_keys
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 12.0.3
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 12.0.3
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: activesupport
57
71
  requirement: !ruby/object:Gem::Requirement