db_schema 0.2.2 → 0.2.3

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
  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