schema2type 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
  SHA256:
3
- metadata.gz: 4d907bb961b8e4dd1d7c94732012dc0aafd75c4e29aef02027ef5b5c7751889f
4
- data.tar.gz: 6494b9e501419c0f9a300ff5b2d056f9224296ddb262b4f709337dd53cabe765
3
+ metadata.gz: 93dcd338891b9f159af21fd6c79db61c4b6b3fa7ee3b3aeee1b52a35ffef9380
4
+ data.tar.gz: 58831c346ebfc9fcd9ba867c34f8c83b2a1a9c2a57b09327bdbc504e203eb18e
5
5
  SHA512:
6
- metadata.gz: 92b851eb75ea3a0a08bbb9a1e9d9f9c097d47b5d81b8d129afc396cd5f9cc27f7e1d8958a702e167457f9adf6c7b8044cd07d4c0a99f59422e5e7b7d3f4c1320
7
- data.tar.gz: 8e4cec8d0f67e5835ff6dd7c28a457b364c27458f9ce1734a211961ffb28772b726183d990fcbc6682c56cddca568900a51361df75b859b5c2dcaf338ccfec95
6
+ metadata.gz: 4d26fd7d40936f4c2720b06fe325583fdd3d6c32995c1176b6edd0498c1c4a8078d6d83a873544592f0be3454becd40cbb8728104ea87a486be25e4447fb1904
7
+ data.tar.gz: 383af1848ec7e2169ce2d744938790e26b8eec8745ea15af526e448281fcb0041457a9f56a6e0e8d7cdd84c481566865f454d847a359ed3b3c2164c297068731
data/exe/schema2type CHANGED
@@ -5,4 +5,4 @@ require 'schema2type'
5
5
 
6
6
  params = ARGV.getopts('s:o:n:', 'snake')
7
7
 
8
- Schema2type.execute(input_file: params['s'], out_file: params['o'], name_space: params['n'], snake_case: params['snake'])
8
+ Schema2type.execute(input_file: params['s'], out_file: params['o'], name_space: params['n'], is_snake_case: params['snake'])
@@ -3,9 +3,9 @@ module Schema2type
3
3
  DEFAULT_SCHEMA_PATH = "./db/schema.rb".freeze
4
4
  DEFAULT_NAME_SPACE = "schema".freeze
5
5
 
6
- def self.execute(input_file:, out_file:, name_space:, snake_case:)
6
+ def self.execute(input_file:, out_file:, name_space:, is_snake_case:)
7
7
 
8
- result = eval(File.read(input_file || DEFAULT_SCHEMA_PATH), CovertService.new(snake_case).get_binding)
8
+ resultHash = eval(File.read(input_file || DEFAULT_SCHEMA_PATH), CovertService.new(is_snake_case).get_binding)
9
9
 
10
10
  File.open(out_file, "w") do |f|
11
11
  f.puts <<~EOS
@@ -13,11 +13,11 @@ module Schema2type
13
13
 
14
14
  /**
15
15
  * auto-generated file
16
- * schema version: #{result[:version]}
16
+ * schema version: #{resultHash[:version]}
17
17
  * This file was automatically generated by schema2type
18
18
  */
19
19
  declare namespace #{name_space || DEFAULT_NAME_SPACE} {
20
- #{result[:lines]}
20
+ #{resultHash[:lines]}
21
21
  }
22
22
  EOS
23
23
  end
@@ -1,28 +1,32 @@
1
1
  module Schema2type
2
2
  class CovertService
3
- def initialize(snake_case)
3
+ def initialize(is_snake_case)
4
4
  @converted_types = []
5
- @snake_case = snake_case
5
+ @is_snake_case = is_snake_case
6
6
  end
7
7
 
8
8
  def get_binding
9
9
  binding
10
10
  end
11
11
 
12
- def create_table(table_name, *)
13
- converter = SchemaConverter.new(table_name: table_name, snake_case: @snake_case)
12
+ # mock method for create_table in schema.rb
13
+ def convert_schema_to_type(table_name, *)
14
+ converter = SchemaConverter.new(table_name: table_name, is_snake_case: @is_snake_case)
14
15
  yield converter
15
- @converted_types.concat converter.result
16
+ @converted_types.concat converter.converted_type_lines
16
17
  end
17
18
 
18
19
  def method_missing(*)
19
20
  # To exclude unnecessary methods
21
+ # TODO: add error handling
20
22
  end
21
23
 
22
24
  def self.method_missing(*)
23
25
  # To exclude unnecessary methods
26
+ # TODO: add error handling
24
27
  end
25
28
 
29
+ # mock module and method for shcema.rb
26
30
  module ActiveRecord
27
31
  module Schema
28
32
  def self.define(*arg)
@@ -35,5 +39,7 @@ module Schema2type
35
39
  end
36
40
  end
37
41
  end
42
+
43
+ alias create_table convert_schema_to_type
38
44
  end
39
45
  end
@@ -3,43 +3,45 @@ require 'active_support/inflector'
3
3
 
4
4
  module Schema2type
5
5
  class SchemaConverter
6
- attr_reader :property_lines, :table_name, :snake_case
6
+ attr_reader :property_lines, :table_name, :is_snake_case
7
7
 
8
8
  TYPE_STRING = 'string'.freeze
9
9
  TYPE_NUMBER = 'number'.freeze
10
10
  TYPE_BOOLEAN = 'boolean'.freeze
11
11
  TYPE_DATE = 'Date'.freeze
12
12
  COLUMN_METHODS = YAML.load_file(File.expand_path(__dir__) + '/conversion_table.yml').to_a
13
+ ID_PROPERTY_LINE_TEXT = " id: number;".freeze
13
14
 
14
15
  def self.define_convert_methods(methods)
15
16
  methods.each do |m|
16
17
  define_method(m[0]) do |name, *options|
17
- push_property_line name: name, type: m[1], options: options
18
+ convert_property_line_and_push name: name, type: m[1], options: options
18
19
  end
19
20
  end
20
21
  end
21
22
 
22
23
  define_convert_methods COLUMN_METHODS
23
24
 
24
- def initialize(table_name:, snake_case: false)
25
+ def initialize(table_name:, is_snake_case: false)
25
26
  @property_lines = []
26
27
  @table_name = table_name.singularize.camelize
27
- @snake_case = snake_case
28
+ @is_snake_case = is_snake_case
28
29
  end
29
30
 
30
- def result
31
- ["type #{table_name} = {", property_lines, "}\n"].flatten
31
+ def converted_type_lines
32
+ ["type #{table_name} = {", ID_PROPERTY_LINE_TEXT, property_lines, "}\n"].flatten
32
33
  end
33
34
 
34
35
  def method_missing(*)
35
36
  # To exclude unnecessary methods
37
+ # TODO: add error handling
36
38
  end
37
39
 
38
40
  private
39
41
 
40
- def push_property_line(name:, type:, options:)
42
+ def convert_property_line_and_push(name:, type:, options:)
41
43
  is_non_nullable = options[0] && options[0].key?(:null) && !options[0][:null]
42
- formatted_name = snake_case ? name.underscore : name.camelcase(:lower)
44
+ formatted_name = is_snake_case ? name.underscore : name.camelcase(:lower)
43
45
  property_line = is_non_nullable ? "#{formatted_name}: #{type};" : "#{formatted_name}: #{type} | null;"
44
46
 
45
47
  property_lines << " #{property_line}"
@@ -1,3 +1,3 @@
1
1
  module Schema2type
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: schema2type
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
  - ryo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-22 00:00:00.000000000 Z
11
+ date: 2019-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport