dbd4 1.0.2 → 1.0.3
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.
- data/lib/dbd4/rails_migration_file.rb +8 -4
- data/lib/dbd4/rails_model_file.rb +18 -7
- data/tests/unit/test_dbd4.rb +49 -3
- metadata +3 -3
@@ -96,11 +96,8 @@ module DBD4
|
|
96
96
|
|
97
97
|
def update(table)
|
98
98
|
raise "MigrationFile : migration file name not given" if ! @migrationfile
|
99
|
-
|
100
|
-
puts "Updating migration file for table #{@tablename} (file : #{@migrationfile})..."
|
101
|
-
newFile = File.open(@migrationfile, "w")
|
102
99
|
c = Inflector.camelize(@tablename)
|
103
|
-
|
100
|
+
new_migration_file_content = <<"MIGRATIONFILE"
|
104
101
|
class Create#{c} < ActiveRecord::Migration
|
105
102
|
def self.up
|
106
103
|
create_table :#{table.name} do |t|
|
@@ -113,6 +110,13 @@ class Create#{c} < ActiveRecord::Migration
|
|
113
110
|
end
|
114
111
|
end
|
115
112
|
MIGRATIONFILE
|
113
|
+
|
114
|
+
old_migration_file_content = IO.readlines(@migrationfile).join("")
|
115
|
+
if (old_migration_file_content != new_migration_file_content)
|
116
|
+
puts "Updating migration file for table #{@tablename} (file : #{@migrationfile})..."
|
117
|
+
newFile = File.open(@migrationfile, "w")
|
118
|
+
newFile.puts new_migration_file_content
|
119
|
+
end
|
116
120
|
end
|
117
121
|
|
118
122
|
def to_str
|
@@ -22,6 +22,8 @@
|
|
22
22
|
#--
|
23
23
|
|
24
24
|
require 'slurp'
|
25
|
+
require 'deep_clone'
|
26
|
+
include DeepClone
|
25
27
|
|
26
28
|
module DBD4
|
27
29
|
class RailsModelFile
|
@@ -77,6 +79,7 @@ module DBD4
|
|
77
79
|
|
78
80
|
@content = IO.read(@modelfile) if ! @content
|
79
81
|
@lines = IO.readlines(@modelfile) if @lines.empty?
|
82
|
+
@original_lines = Array.new(@lines)
|
80
83
|
|
81
84
|
raise "ModelFile : Cannot load, no content was given" if ! @content
|
82
85
|
|
@@ -176,6 +179,8 @@ module DBD4
|
|
176
179
|
raise "ModelFile : model file name not given" if ! @modelfile
|
177
180
|
raise "ModelFile : no content given" if @content == nil
|
178
181
|
|
182
|
+
left_over = @elements.deep_clone
|
183
|
+
|
179
184
|
table.relation_starts.each_value do |r|
|
180
185
|
dname = ""
|
181
186
|
if r.type == :one2one
|
@@ -204,7 +209,7 @@ module DBD4
|
|
204
209
|
else
|
205
210
|
@lines[element[:start]].sub!(/(#{etype}[^,]+)/, "\\1, :as => '#{r.destination_column.polymorphic}'")
|
206
211
|
end
|
207
|
-
|
212
|
+
left_over[etype].delete(dname)
|
208
213
|
else
|
209
214
|
@lines[@elements['class'][:start]] += " #{etype} :#{dname}"
|
210
215
|
if r.destination_column.polymorphic
|
@@ -245,17 +250,18 @@ module DBD4
|
|
245
250
|
# do nothing
|
246
251
|
end
|
247
252
|
end
|
248
|
-
|
253
|
+
left_over[etype].delete(dname)
|
249
254
|
else
|
250
255
|
@lines[@elements['class'][:start]] += " #{etype} :#{dname}"
|
251
256
|
if r.destination_column.polymorphic
|
257
|
+
@elements[etype] = { dname => { :polymorphic => true, :added => true } }
|
252
258
|
@lines[@elements['class'][:start]] += ", :polymorphic => true"
|
253
259
|
end
|
254
|
-
@lines[@elements['class'][:start]] += "\n"
|
260
|
+
@lines[@elements['class'][:start]] += "\n"
|
255
261
|
end
|
256
262
|
end
|
257
263
|
|
258
|
-
|
264
|
+
left_over.each do |k1, v1|
|
259
265
|
next if k1 == 'class' or v1.empty?
|
260
266
|
v1.each do |k2, v2|
|
261
267
|
@warnings << "Warning in file #{@modelfile} at line #{v2[:start]}"
|
@@ -267,9 +273,14 @@ module DBD4
|
|
267
273
|
end
|
268
274
|
end
|
269
275
|
|
270
|
-
|
271
|
-
|
272
|
-
|
276
|
+
# If we made a change to the document, generate it
|
277
|
+
original_document_modified = @lines <=> @original_lines
|
278
|
+
|
279
|
+
if (original_document_modified != 0)
|
280
|
+
puts "Updating model #{@modelname} (file : #{@modelfile})..."
|
281
|
+
newFile = File.open(@modelfile, "w")
|
282
|
+
newFile.puts @lines
|
283
|
+
end
|
273
284
|
end
|
274
285
|
|
275
286
|
def to_str
|
data/tests/unit/test_dbd4.rb
CHANGED
@@ -3,6 +3,7 @@ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "..", "lib")
|
|
3
3
|
require 'dbd4/dbd4_model_file'
|
4
4
|
require 'test/unit'
|
5
5
|
require 'deep_clone'
|
6
|
+
require 'pp'
|
6
7
|
|
7
8
|
include DeepClone
|
8
9
|
|
@@ -20,7 +21,23 @@ $files = {
|
|
20
21
|
'app/models/jobs_person.rb' => "class JobsPerson < ActiveRecord::Base\nend\n",
|
21
22
|
'app/models/dog.rb' => "class Dog < ActiveRecord::Base\nend\n",
|
22
23
|
'app/models/kid.rb' => "class Kid < ActiveRecord::Base\nend\n",
|
23
|
-
'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n"
|
24
|
+
'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n",
|
25
|
+
'db/migrate/001_create_cats.rb' => "",
|
26
|
+
'db/migrate/001_create_cats.rb' => "",
|
27
|
+
'db/migrate/001_create_cats.rb' => "",
|
28
|
+
'db/migrate/002_create_computers_users.rb' => "",
|
29
|
+
'db/migrate/003_create_computers.rb' => "",
|
30
|
+
'db/migrate/004_create_people.rb' => "",
|
31
|
+
'db/migrate/005_create_users.rb' => "",
|
32
|
+
'db/migrate/006_create_security_numbers.rb' => "",
|
33
|
+
'db/migrate/007_create_jobs.rb' => "",
|
34
|
+
'db/migrate/008_create_jobs_people.rb' => "",
|
35
|
+
'db/migrate/009_create_generic_animals.rb' => "",
|
36
|
+
'db/migrate/010_create_shoes.rb' => "",
|
37
|
+
'db/migrate/011_create_wives.rb' => "",
|
38
|
+
'db/migrate/012_create_dogs.rb' => "",
|
39
|
+
'db/migrate/013_create_kids.rb' => "",
|
40
|
+
'db/migrate/014_create_houses.rb' => ""
|
24
41
|
}
|
25
42
|
|
26
43
|
$files_written_to = Array.new
|
@@ -189,7 +206,21 @@ INPUT
|
|
189
206
|
'app/models/jobs_person.rb' => "class JobsPerson < ActiveRecord::Base\nend\n",
|
190
207
|
'app/models/dog.rb' => "class Dog < ActiveRecord::Base\nend\n",
|
191
208
|
'app/models/kid.rb' => "class Kid < ActiveRecord::Base\nend\n",
|
192
|
-
'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n"
|
209
|
+
'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n",
|
210
|
+
'db/migrate/001_create_cats.rb' => "",
|
211
|
+
'db/migrate/002_create_computers_users.rb' => "",
|
212
|
+
'db/migrate/003_create_computers.rb' => "",
|
213
|
+
'db/migrate/004_create_people.rb' => "",
|
214
|
+
'db/migrate/005_create_users.rb' => "",
|
215
|
+
'db/migrate/006_create_security_numbers.rb' => "",
|
216
|
+
'db/migrate/007_create_jobs.rb' => "",
|
217
|
+
'db/migrate/008_create_jobs_people.rb' => "",
|
218
|
+
'db/migrate/009_create_generic_animals.rb' => "",
|
219
|
+
'db/migrate/010_create_shoes.rb' => "",
|
220
|
+
'db/migrate/011_create_wives.rb' => "",
|
221
|
+
'db/migrate/012_create_dogs.rb' => "",
|
222
|
+
'db/migrate/013_create_kids.rb' => "",
|
223
|
+
'db/migrate/014_create_houses.rb' => ""
|
193
224
|
}
|
194
225
|
@b.generateModelFiles
|
195
226
|
#puts $files_written_to
|
@@ -226,7 +257,22 @@ INPUT
|
|
226
257
|
'app/models/jobs_person.rb' => "class JobsPerson < ActiveRecord::Base\nend\n",
|
227
258
|
'app/models/dog.rb' => "class Dog < ActiveRecord::Base\n has_many :generic_animals, :as => gogole\nend\n",
|
228
259
|
'app/models/kid.rb' => "class Kid < ActiveRecord::Base\nend\n",
|
229
|
-
'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n"
|
260
|
+
'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n",
|
261
|
+
'db/migrate/001_create_cats.rb' => "",
|
262
|
+
'db/migrate/001_create_cats.rb' => "",
|
263
|
+
'db/migrate/002_create_computers_users.rb' => "",
|
264
|
+
'db/migrate/003_create_computers.rb' => "",
|
265
|
+
'db/migrate/004_create_people.rb' => "",
|
266
|
+
'db/migrate/005_create_users.rb' => "",
|
267
|
+
'db/migrate/006_create_security_numbers.rb' => "",
|
268
|
+
'db/migrate/007_create_jobs.rb' => "",
|
269
|
+
'db/migrate/008_create_jobs_people.rb' => "",
|
270
|
+
'db/migrate/009_create_generic_animals.rb' => "",
|
271
|
+
'db/migrate/010_create_shoes.rb' => "",
|
272
|
+
'db/migrate/011_create_wives.rb' => "",
|
273
|
+
'db/migrate/012_create_dogs.rb' => "",
|
274
|
+
'db/migrate/013_create_kids.rb' => "",
|
275
|
+
'db/migrate/014_create_houses.rb' => ""
|
230
276
|
}
|
231
277
|
|
232
278
|
$files_written_to = Array.new
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: dbd4
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.0.
|
6
|
+
version: 1.0.3
|
7
7
|
date: 2006-08-23 00:00:00 -04:00
|
8
8
|
summary: A package for importing DB Designer 4 xml models in rails.
|
9
9
|
require_paths:
|
@@ -30,10 +30,10 @@ authors:
|
|
30
30
|
- Daniel Shane
|
31
31
|
files:
|
32
32
|
- lib/slurp.rb
|
33
|
-
- lib/dbd4/dbd4_model_file.rb
|
34
|
-
- lib/dbd4/ordered_hash.rb
|
35
33
|
- lib/dbd4/rails_migration_file.rb
|
36
34
|
- lib/dbd4/rails_model_file.rb
|
35
|
+
- lib/dbd4/dbd4_model_file.rb
|
36
|
+
- lib/dbd4/ordered_hash.rb
|
37
37
|
- bin/dbd4
|
38
38
|
- README
|
39
39
|
test_files:
|