active-dbml 0.2.1 → 0.2.4

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: ddecc1470323e8c7f6db8edef2bf5eac1503419eb7e58eaedfb24342ff97d15d
4
- data.tar.gz: 52e7fc986872d0b5bb1322a7d20cb1ad784273d70afaa7a28c99b36011cb8657
3
+ metadata.gz: 8c3e035fb9fbf2783cffe7222a4675df48bf99a242c2b32a970244c0a6757640
4
+ data.tar.gz: c0b9e975256b8fa43b5f692f242423be0132ef8c3d4297be35e29e4509af12a9
5
5
  SHA512:
6
- metadata.gz: cfd9f9f73ad07709ed7d4e5d4c6b95d55723a2f698dfbd175ef8d02d0d8a3aa4ad33ab64fa0435cf97ebebd89eea75798bb97f922765b5254e673b93e03bb1b7
7
- data.tar.gz: 632639874f797f81ee84a26c1affbfbf71b67e43f5da9062e019548c8f9782684b71160a8b865fc53334224c09945b78a76c4f89f56aa3ca493863b3acdef3cf
6
+ metadata.gz: eca3036cced74a86f8df57295d74288af90830b36cf225248c6ed5f697a7dd14eda1f33b04ad9527e010180c05d55ebf74eb42635ae3359a7c65817e2ee16e5a
7
+ data.tar.gz: '0378667f33007af8d6d0b961bacfaad68dff98028c32241ae17b4c6ec04829acf42f5fdd37074d3840c78f25bf0ac036b6c25650a0503d382effbf21a54bf4f8'
@@ -1,5 +1,5 @@
1
1
  module Active
2
2
  module Dbml
3
- VERSION = "0.2.1"
3
+ VERSION = "0.2.4"
4
4
  end
5
5
  end
data/lib/active/dbml.rb CHANGED
@@ -11,45 +11,45 @@ module Active
11
11
  end
12
12
 
13
13
  def self.generate_dbml(models)
14
- dbml_output = []
15
- # 出力済みのEnumを追跡
16
- enums_generated = Set.new
17
-
18
- models.each do |model|
19
- if ActiveRecord::Base.connection.table_exists?(model.table_name)
20
- # 抽象クラスはスキップ
21
- next if model.abstract_class?
22
-
23
- primary_key = get_primary_key(model)
24
- foreign_keys = get_foreign_keys(model)
25
-
26
- dbml_output << "Table #{model.table_name} {"
27
-
28
- # Enumを取得
29
- defined_enums = model.defined_enums.keys
30
-
31
- # カラム情報を生成
32
- generate_columns(dbml_output, model, primary_key, foreign_keys, defined_enums)
33
-
34
- # Index情報の取得
35
- generate_indexes(dbml_output, model)
36
-
37
- # テーブルコメントの取得
38
- generate_table_comment(dbml_output, model)
39
-
40
- # テーブルを閉じる
41
- dbml_output << "}\n"
42
-
43
- # Enumの詳細を取得
44
- generate_enums(dbml_output, model, enums_generated)
14
+ begin
15
+ dbml_output = []
16
+ # 出力済みのEnumを追跡
17
+ enums_generated = Set.new
18
+
19
+ models.each do |model|
20
+ if ActiveRecord::Base.connection.table_exists?(model.table_name)
21
+ # 抽象クラスはスキップ
22
+ next if model.abstract_class?
23
+
24
+ primary_key = get_primary_key(model)
25
+ foreign_keys = get_foreign_keys(model)
26
+
27
+ dbml_output << "Table #{model.table_name} {"
28
+
29
+ # Enumを取得
30
+ defined_enums = model.defined_enums.keys
31
+
32
+ # カラム情報を生成
33
+ generate_columns(dbml_output, model, primary_key, foreign_keys, defined_enums)
34
+
35
+ # Index情報の取得
36
+ generate_indexes(dbml_output, model)
37
+
38
+ # テーブルコメントの取得
39
+ generate_table_comment(dbml_output, model)
40
+
41
+ # テーブルを閉じる
42
+ dbml_output << "}\n"
43
+
44
+ # Enumの詳細を取得
45
+ generate_enums(dbml_output, model, enums_generated)
46
+ end
45
47
  end
48
+
49
+ dbml_output.join("\n")
50
+ rescue => exception
51
+ Rails.logger.error exception
46
52
  end
47
-
48
- dbml_output.join("\n")
49
- # begin
50
- # rescue => exception
51
- # Rails.logger.error exception
52
- # end
53
53
  end
54
54
 
55
55
  private
@@ -62,29 +62,33 @@ module Active
62
62
 
63
63
  # get foreign key only belongs_to association
64
64
  model.reflect_on_all_associations(:belongs_to).each do |association|
65
- foreign_key = association.options[:foreign_key]
66
- foreign_key_destination = "#{association.plural_name}.#{association.class_name.constantize.primary_key}"
67
-
68
- # NOTE: Check model type
69
- # Skip anything other than ActiveRecord::Base
70
- if association.class_name.constantize < ActiveRecord::Base
71
- association.class_name.constantize.reflect_on_all_associations.each do |relation_association|
72
- if model.table_name.eql?(relation_association.plural_name)
73
- case relation_association.macro
74
- when :has_one
75
- foreign_keys[foreign_key] = { destination: foreign_key_destination, relation_type: '-' }
76
- when :has_many
77
- foreign_keys[foreign_key] = { destination: foreign_key_destination, relation_type: '>' }
78
- else
65
+ begin
66
+ foreign_key = association.foreign_key
67
+ foreign_key_destination = "#{association.plural_name}.#{association.class_name.constantize.primary_key}"
68
+
69
+ # NOTE: Check model type
70
+ # Skip anything other than ActiveRecord::Base
71
+ if association.class_name.constantize < ActiveRecord::Base
72
+ association.class_name.constantize.reflect_on_all_associations.each do |relation_association|
73
+ if model.table_name.eql?(relation_association.plural_name)
74
+ case relation_association.macro
75
+ when :has_one
76
+ foreign_keys[foreign_key] = { destination: foreign_key_destination, relation_type: '-' }
77
+ when :has_many
78
+ foreign_keys[foreign_key] = { destination: foreign_key_destination, relation_type: '>' }
79
+ else
80
+ end
79
81
  end
80
82
  end
83
+ elsif association.class_name.constantize < ActiveYaml::Base
84
+ puts "⚠ #{association.class_name.constantize} is an ActiveYaml model."
85
+ elsif association.class_name.constantize < ActiveHash::Base
86
+ puts "⚠ #{association.class_name.constantize} is an ActiveHash model."
87
+ else
88
+ puts "⚠ Cannot determine type of #{association.class_name.constantize}"
81
89
  end
82
- elsif association.class_name.constantize < ActiveYaml::Base
83
- puts "⚠ #{association.class_name.constantize} is an ActiveYaml model."
84
- elsif association.class_name.constantize < ActiveHash::Base
85
- puts "⚠ #{association.class_name.constantize} is an ActiveHash model."
86
- else
87
- puts "⚠ Cannot determine type of #{association.class_name.constantize}"
90
+ rescue => exception
91
+ Rails.logger.error exception
88
92
  end
89
93
  end
90
94
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active-dbml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - ukmshi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-14 00:00:00.000000000 Z
11
+ date: 2023-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails