yaml2erd 0.1.1 → 0.2.0

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: bd5696521ec49d8752a8b85cdf0eac256ccfd2e7b807031b956d454cc9bc4c8b
4
- data.tar.gz: 3b9308df9411151cec2cb7f0dd358ad859db04446e174efd46f700b3df4123ea
3
+ metadata.gz: b0c951305aba9df6d52d9ee4cd03a37315600bddb6ad784d513989a6cd59a49f
4
+ data.tar.gz: 0d5056f95c9bc2ace3ae549ee3c7e0a35ce51822c4614cb37334b049136831ec
5
5
  SHA512:
6
- metadata.gz: b0ff3fd25fa6751e68fc1b806e19fda231126cd683623b0364e4928de5e457469ab29fa9de8b417028c365f6a6851607b8d82e0afd4ec06600051132ee8525c8
7
- data.tar.gz: a28aaeb33320bc7943e37d97beb109b6988b3a15b84627ca64f5869272cc936a70021cf446196d4c56fe5caa3f8da34dea9757425ade63942f03e51fd3cbef7d
6
+ metadata.gz: 4dc611ca29259d56d984881e787ab8a7bc523df072c23772bb54f6939402fb54aff54c0c754a15f0e5fc398497fada7d171bf97247f5c86552c214f08163b213
7
+ data.tar.gz: e4010ff0d1a4433e71d60efb3827f124df5bd1113c59cb8427618c2c0179bebc5b8434929872dba4d4703149b4c26636b3787f366d966fbf247285c6c9b73ecd
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yaml2erd (0.1.0)
4
+ yaml2erd (0.2.0)
5
5
  activesupport (~> 5.2)
6
6
  gviz (~> 0.3.5)
7
7
 
data/README.md CHANGED
@@ -46,12 +46,28 @@ sample path
46
46
  ### step4. execute
47
47
  ```
48
48
  mkdir erd
49
- bin/yaml2erd erd/table.yaml -c config/gv_conf.yaml -o erd/table.png
49
+ yaml2erd erd/table.yaml -c config/gv_conf.yaml -o erd/table.png
50
50
  ```
51
51
 
52
52
  - `-c` option is config path
53
53
  - `-o` option is outputed path
54
54
 
55
+ ## you can notice the difference between ERD and DDL
56
+ - step1. get column info from yaml
57
+
58
+ ```
59
+ parser = ErYamlParser.new('erd/table.yaml')
60
+ columns_hash_yaml = parser.models[:Post].columns
61
+ ```
62
+
63
+ - step2. get column info from ActiveRecord
64
+
65
+ ```
66
+ columns_hash_ar = Post.column_names
67
+ ```
68
+
69
+ - step3. Write test code to compare these two
70
+
55
71
  ## Development
56
72
 
57
73
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -0,0 +1,17 @@
1
+ class GvIdMap
2
+ def initialize
3
+ @map = {}
4
+ @cnt = 1
5
+ end
6
+
7
+ def enc(model)
8
+ model = model.to_sym if model.class == String
9
+
10
+ if @map[model].nil?
11
+ @map[model] = @cnt.to_s.to_sym
12
+ @cnt += 1
13
+ end
14
+
15
+ @map[model]
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  class Yaml2erd
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/yaml2erd.rb CHANGED
@@ -1,7 +1,8 @@
1
1
  require 'gviz'
2
- require 'rails/all'
2
+ require 'active_support/all'
3
3
  require 'yaml2erd/version'
4
4
  require 'yaml2erd/er_yaml_parser'
5
+ require 'yaml2erd/gv_id_map'
5
6
 
6
7
  class Yaml2erd
7
8
  attr_accessor :group_global_conf
@@ -42,6 +43,7 @@ class Yaml2erd
42
43
  def initialize(yaml_file_path, conf_yaml_path)
43
44
  @yaml = ErYamlParser.new(yaml_file_path)
44
45
  @gv = Gviz.new
46
+ @gv_id_map = GvIdMap.new
45
47
 
46
48
  apply_conf(conf_yaml_path)
47
49
  end
@@ -57,11 +59,11 @@ class Yaml2erd
57
59
 
58
60
  # TODO: addとrouteの違いはなんだろう
59
61
  # entityの枠(model)作成
60
- @gv.route model
62
+ @gv.route @gv_id_map.enc(model)
61
63
 
62
64
  # entityの中身(tableタグ)作成、適用
63
65
  table_tag = create_table_tag(model, columns, description)
64
- @gv.node model, label: table_tag
66
+ @gv.node @gv_id_map.enc(model), label: table_tag
65
67
 
66
68
  # relation適用
67
69
  apply_relation(model, relations)
@@ -195,7 +197,7 @@ class Yaml2erd
195
197
  relations.each do |relation|
196
198
  relation.each do |rel_type, rel_model|
197
199
  next if rel_type == :belongs_to
198
- @gv.edge "#{model}_#{rel_model}", ARROW_MAP[rel_type]
200
+ @gv.edge "#{@gv_id_map.enc(model)}_#{@gv_id_map.enc(rel_model)}", ARROW_MAP[rel_type]
199
201
  end
200
202
  end
201
203
  end
@@ -208,13 +210,14 @@ class Yaml2erd
208
210
  # mapをもとにグルーピング
209
211
  @yaml.groups_map.each do |group_name, models|
210
212
  group_bgcolor = @yaml.groups_bgcolor_map[group_name.to_sym]
213
+ alias_models = models.map do |model| @gv_id_map.enc(model) end
211
214
 
212
215
  @gv.subgraph do
213
216
  global group_conf.merge(label: group_name, bgcolor: group_bgcolor)
214
217
  nodes nodes_conf
215
218
  # model割り当て
216
- models.each do |model|
217
- node model
219
+ alias_models.each do |alias_model|
220
+ node alias_model
218
221
  end
219
222
  end
220
223
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaml2erd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - rh-taro
@@ -103,6 +103,7 @@ files:
103
103
  - lib/yaml2erd.rb
104
104
  - lib/yaml2erd/er_yaml_model.rb
105
105
  - lib/yaml2erd/er_yaml_parser.rb
106
+ - lib/yaml2erd/gv_id_map.rb
106
107
  - lib/yaml2erd/version.rb
107
108
  - yaml2erd.gemspec
108
109
  homepage: https://github.com/rh-taro/yaml2erd