schema2type 0.1.4 → 0.1.5

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: 26eca7d1e46ea5866a0330f948afd4d43b306893e1eed16719fb91ae933541c0
4
- data.tar.gz: 6384cd0e436d6c87e7b6f8a2e019c8030fe8c57b00cf1150938e418d6f2598aa
3
+ metadata.gz: 7c1f92fd874fa9544443fbb63b86d500777d18ed87b4bff1791cc10cb7e505fc
4
+ data.tar.gz: d896d9566f061ed9012927f62ac0dbd858a942ac74f7fdfec1d22aa62856aaaf
5
5
  SHA512:
6
- metadata.gz: b08a1c356d90f54a0808304cd99f79e74405e3e64d3895b06eb54337d7a0796199086d8fd69a9ab6c1e70becb2661c89421204bdc19d1b2231f08671c99a4f9e
7
- data.tar.gz: d8e94d9555d620d4aafec54af941a055a99db51824a4d54deb86553f36cc158af6df4bf8840209d484725891c5c1ab735c65e9feb20d2c3561d905b8607ae799
6
+ metadata.gz: 211ab47195029c4e1bdb334c59fa41c42fcff44399af28ebb38d264d30773792c6e3c8a22cb9ca7882ee7349232bf24aa705a1d1388270f9629e05f701754ab2
7
+ data.tar.gz: df37e175322b12a30b51215e68b00319213b8f055a53aa8105e9de0bcdfec9b526eddf68d51d1b17d2b2bfa4bab7c97e6d9b082688cfb14c1aa6256ac5222c47
@@ -1,18 +1,16 @@
1
1
  require 'date'
2
2
 
3
3
  module Schema2type
4
-
5
4
  $convert_types = []
6
5
  $schema_version = ''
7
6
 
8
7
  def self.execute(input_file:, out_file:, name_space:)
9
-
10
8
  eval(File.read(input_file))
11
9
 
12
10
  convert_type_text = $convert_types.map { |t| " #{t}" }.join("\n").strip
13
11
 
14
12
  File.open(out_file, "w") do |f|
15
- f.puts <<-EOS
13
+ f.puts <<-EOS
16
14
  /* eslint no-unused-vars: 0 */
17
15
 
18
16
  /**
@@ -23,12 +21,10 @@ module Schema2type
23
21
  declare namespace #{name_space ||= "schema"} {
24
22
  #{convert_type_text}
25
23
  }
26
- EOS
24
+ EOS
27
25
  end
28
26
  end
29
27
 
30
- private
31
-
32
28
  def self.create_table(table_name, *arg, &block)
33
29
  converter = SchemaConverter.new(table_name: table_name)
34
30
  block.call(converter)
@@ -1,84 +1,51 @@
1
- require "active_support/inflector"
1
+ require 'active_support/inflector'
2
2
 
3
3
  module Schema2type
4
4
  class SchemaConverter
5
5
  attr_accessor :out_text
6
6
  attr_reader :table_name
7
7
 
8
- TYPE_STRING = "string"
9
- TYPE_NUMBER = "number"
10
- TYPE_BOOLEAN = "string"
11
- TYPE_DATE = "Date"
8
+ TYPE_STRING = 'string'.freeze
9
+ TYPE_NUMBER = 'number'.freeze
10
+ TYPE_BOOLEAN = 'string'.freeze
11
+ TYPE_DATE = 'Date'.freeze
12
+ COLUMN_METHODS = [
13
+ { string: TYPE_STRING },
14
+ { inet: TYPE_STRING },
15
+ { integer: TYPE_NUMBER },
16
+ { bigint: TYPE_NUMBER },
17
+ { float: TYPE_NUMBER },
18
+ { text: TYPE_STRING },
19
+ { boolean: TYPE_BOOLEAN },
20
+ { decimal: TYPE_NUMBER },
21
+ { json: TYPE_STRING },
22
+ { jsonb: TYPE_STRING },
23
+ { binary: TYPE_STRING },
24
+ { date: TYPE_DATE },
25
+ { datetime: TYPE_DATE },
26
+ { timestamp: TYPE_DATE },
27
+ { datetime_with_timezone: TYPE_DATE }
28
+ ].map(&:freeze).freeze
12
29
 
13
30
  def initialize(table_name:)
14
31
  @out_text = []
15
- @table_name = table_name
32
+ @table_name = table_name.singularize.camelize
16
33
  end
17
34
 
18
35
  def finalize
19
- @out_text.unshift "type #{@table_name.singularize.camelize} = {"
36
+ @out_text.unshift "type #{@table_name} = {"
20
37
  @out_text << "}\n"
21
38
  end
22
39
 
23
- def date(name, *options)
24
- push_property_line name: name, type: TYPE_STRING, options: options
40
+ def self.define_convert_methods(methods)
41
+ methods.each do |m|
42
+ define_method(m.keys[0]) do |name, *options|
43
+ push_property_line name: name, type: m.values[0], options: options
44
+ end
45
+ end
25
46
  end
26
47
 
27
- def string(name, *options)
28
- push_property_line name: name, type: TYPE_STRING, options: options
29
- end
30
-
31
- def inet(name, *options)
32
- push_property_line name: name, type: TYPE_STRING, options: options
33
- end
34
-
35
- def integer(name, *options)
36
- push_property_line name: name, type: TYPE_NUMBER, options: options
37
- end
38
-
39
- def bigint(name, *options)
40
- push_property_line name: name, type: TYPE_NUMBER, options: options
41
- end
42
-
43
- def float(name, *options)
44
- push_property_line name: name, type: TYPE_NUMBER, options: options
45
- end
46
-
47
- def text(name, *options)
48
- push_property_line name: name, type: TYPE_STRING, options: options
49
- end
50
-
51
- def boolean(name, *options)
52
- push_property_line name: name, type: TYPE_BOOLEAN, options: options
53
- end
54
-
55
- def decimal(name, *options)
56
- push_property_line name: name, type: TYPE_NUMBER, options: options
57
- end
58
-
59
- def json(name, *options)
60
- push_property_line name: name, type: TYPE_STRING, options: options
61
- end
62
-
63
- def jsonb(name, *options)
64
- push_property_line name: name, type: TYPE_STRING, options: options
65
- end
66
-
67
- def binary(name, *options)
68
- push_property_line name: name, type: TYPE_STRING, options: options
69
- end
70
-
71
- def datetime(name, *options)
72
- push_property_line name: name, type: TYPE_DATE, options: options
73
- end
74
-
75
- def timestamp(name, *options)
76
- push_property_line name: name, type: TYPE_DATE, options: options
77
- end
78
-
79
- def datetime_with_timezone(name, *options)
80
- push_property_line name: name, type: TYPE_DATE, options: options
81
- end
48
+ define_convert_methods COLUMN_METHODS
82
49
 
83
50
  def method_missing(*arg)
84
51
  # To exclude unnecessary methods
@@ -87,9 +54,9 @@ module Schema2type
87
54
  private
88
55
 
89
56
  def push_property_line(name:, type:, options:)
90
- is_non_nullable = options[0] && options[0].has_key?(:null) && !options[0][:null]
91
- camelizeName = name.camelcase(:lower)
92
- property_line = is_non_nullable ? "#{camelizeName}: #{type}" : "#{camelizeName}: #{type} | null"
57
+ is_non_nullable = options[0] && options[0].key?(:null) && !options[0][:null]
58
+ camelize_name = name.camelcase(:lower)
59
+ property_line = is_non_nullable ? "#{camelize_name}: #{type}" : "#{camelize_name}: #{type} | null"
93
60
 
94
61
  @out_text << " #{property_line}"
95
62
  end
@@ -1,3 +1,3 @@
1
1
  module Schema2type
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schema2type
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - ryo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-19 00:00:00.000000000 Z
11
+ date: 2019-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport