db_schema 0.2.2 → 0.2.3

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
  SHA1:
3
- metadata.gz: f8d57c1174558070a12ed7b3f5469b1bdaeb019d
4
- data.tar.gz: d389fbca9c57a1a5cbf7356b8cc71c7c4db5423a
3
+ metadata.gz: 3d1180d9c60f0843b544812dfea4fb494697cc69
4
+ data.tar.gz: 4e4581809741785cc52199c7fa5c8ffb03307af3
5
5
  SHA512:
6
- metadata.gz: d7ddcffe01abc26f6ee010e7ed161c53ce60d13e29e2e03be015750d8ba37329e1cbe683d446452f585621d31d55d89ddd9506d44d1ba9bd487d644b2fff6130
7
- data.tar.gz: cea37fc0fe70f6e70d4118169677137e4b4c4bda5faed03b26f54484972444cf48113238c3551cb680a7aa23f0e824046ae9b79e7e26305e0090f54810509e34
6
+ metadata.gz: ec90f1a30f2bb6bd662e47344fcc593290ff458bd937e005a1ee16e75e8d6f362115649560d7316f192beaf1dda67926a66105b6fa536edaaefbf00a04734d82
7
+ data.tar.gz: 09cb9a9558dace6bbb1aaee8343e32430c885c5a14ee87c6f2900db172e0f728ff8c76de0a9c3d7ea2bfa58ec80139c0280cddab47febfe2e441dd8573ec8c7b
data/README.md CHANGED
@@ -53,7 +53,7 @@ But you would lose it even with manual migrations.
53
53
  Add this line to your application's Gemfile:
54
54
 
55
55
  ``` ruby
56
- gem 'db_schema', '~> 0.2.2'
56
+ gem 'db_schema', '~> 0.2.3'
57
57
  ```
58
58
 
59
59
  And then execute:
@@ -137,7 +137,7 @@ if defined?(AwesomePrint)
137
137
  ''
138
138
  end
139
139
 
140
- "#<#{object.class} (#{object.type.ai}) #{object.name.ai}#{options}#{primary_key}>"
140
+ "#<DbSchema::Definitions::Field::Custom (#{object.type.ai}) #{object.name.ai}#{options}#{primary_key}>"
141
141
  end
142
142
 
143
143
  def awesome_dbschema_index(object)
@@ -3,16 +3,12 @@ module DbSchema
3
3
  module Field
4
4
  class << self
5
5
  def build(name, type, **options)
6
- if registry.key?(type)
7
- type_class_for(type).new(name, **options)
8
- else
9
- Custom.new(name, type_name: type, **options)
10
- end
6
+ type_class_for(type).new(name, **options)
11
7
  end
12
8
 
13
9
  def type_class_for(type)
14
10
  registry.fetch(type) do |type|
15
- raise ArgumentError, "#{type.inspect} type is not supported."
11
+ Custom.class_for(type)
16
12
  end
17
13
  end
18
14
 
@@ -44,10 +44,6 @@ module DbSchema
44
44
  end
45
45
  end
46
46
 
47
- def custom_type?
48
- false
49
- end
50
-
51
47
  def type
52
48
  self.class.type
53
49
  end
@@ -2,19 +2,20 @@ module DbSchema
2
2
  module Definitions
3
3
  module Field
4
4
  class Custom < Base
5
- attr_reader :type_name
5
+ class << self
6
+ def class_for(type_name)
7
+ raise ArgumentError if type_name.nil?
6
8
 
7
- def initialize(name, type_name:, **options)
8
- super(name, **options)
9
- @type_name = type_name
10
- end
11
-
12
- def custom_type?
13
- true
14
- end
9
+ Class.new(self) do
10
+ define_method :type do
11
+ type_name
12
+ end
15
13
 
16
- def type
17
- type_name
14
+ define_singleton_method :type do
15
+ type_name
16
+ end
17
+ end
18
+ end
18
19
  end
19
20
  end
20
21
  end
@@ -45,7 +45,8 @@ module DbSchema
45
45
  c.numeric_scale AS num_scale,
46
46
  c.datetime_precision AS dt_precision,
47
47
  c.interval_type,
48
- e.data_type AS element_type
48
+ e.data_type AS element_type,
49
+ e.udt_name AS element_custom_type_name
49
50
  FROM information_schema.columns AS c
50
51
  LEFT JOIN information_schema.element_types AS e
51
52
  ON e.object_catalog = c.table_catalog
@@ -294,8 +295,14 @@ SELECT extname
294
295
  end
295
296
  end
296
297
  when :array
297
- Utils.rename_keys(Utils.filter_by_keys(data, :element_type)) do |attributes|
298
- attributes[:of] = attributes[:element_type].to_sym
298
+ Utils.rename_keys(
299
+ Utils.filter_by_keys(data, :element_type, :element_custom_type_name)
300
+ ) do |attributes|
301
+ attributes[:of] = if attributes[:element_type] == 'USER-DEFINED'
302
+ attributes[:element_custom_type_name]
303
+ else
304
+ attributes[:element_type]
305
+ end.to_sym
299
306
  end
300
307
  else
301
308
  {}
@@ -11,8 +11,8 @@ module DbSchema
11
11
 
12
12
  table.fields.each do |field|
13
13
  if field.is_a?(Definitions::Field::Custom)
14
- unless schema.enums.map(&:name).include?(field.type_name)
15
- error_message = %(Field "#{table.name}.#{field.name}" has unknown type "#{field.type_name}")
14
+ unless schema.enums.map(&:name).include?(field.type)
15
+ error_message = %(Field "#{table.name}.#{field.name}" has unknown type "#{field.type}")
16
16
  errors << error_message
17
17
  end
18
18
  end
@@ -1,3 +1,3 @@
1
1
  module DbSchema
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: db_schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vsevolod Romashov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-06 00:00:00.000000000 Z
11
+ date: 2016-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel