alexrothenberg-legacy_data 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -24,7 +24,7 @@ Examples:
24
24
  * Configure your application to connect to your existing Oracle database. Get the connect connect string from your dba (something like: user/password@server.example.com:1541/sid.world) and edit your config/database.yml
25
25
  development:
26
26
  adapter: oracle_enhanced
27
- database: server.example.com:1541/sid.world
27
+ database: server.example.com:1541/my_database.world
28
28
  username: user
29
29
  password: password
30
30
  * Generate models for all existing tables
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.9
1
+ 0.0.10
@@ -3,13 +3,13 @@ class <%= class_name -%> < ActiveRecord::Base
3
3
  <%= "set_primary_key #{primary_key.to_sym.inspect}" if primary_key %>
4
4
 
5
5
  # Relationships
6
- <%- relations[:has_some ].each do |table_name, foreign_key|
7
- -%> has_many <%= LegacyData::TableClassNameMapper.class_name_for(table_name).underscore.pluralize.to_sym.inspect %>, :foreign_key => <%= foreign_key.inspect %>
6
+ <%- relations[:has_some ].each do |table_name, options|
7
+ -%> has_many <%= LegacyData::TableClassNameMapper.class_name_for(table_name).underscore.pluralize.to_sym.inspect %><% options.each {|key, value| %>, <%="#{key.inspect} => #{value.inspect} "%> <%} %>
8
8
  <%- end -%>
9
9
  <%- relations[:belongs_to ].each do |table_name, foreign_key|
10
10
  -%> belongs_to <%= LegacyData::TableClassNameMapper.class_name_for(table_name).underscore.to_sym.inspect %>, :foreign_key => <%= foreign_key.inspect %>
11
11
  <%- end -%>
12
- <%- relations[:has_and_belongs_to_many].each do |table_name, options|
12
+ <%- relations[:has_and_belongs_to_many].each do |table_name, opts|
13
13
  -%> has_and_belongs_to_many <%= LegacyData::TableClassNameMapper.class_name_for(table_name).underscore.pluralize.to_sym.inspect %>, :foreign_key => <%= options[:foreign_key].inspect%>, :association_foreign_key => <%= options[:association_foreign_key].inspect%>, :join_table => <%= options[:join_table].inspect %>
14
14
  <%- end -%>
15
15
 
data/legacy_data.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{legacy_data}
8
- s.version = "0.0.9"
8
+ s.version = "0.0.10"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alex Rothenberg"]
12
- s.date = %q{2009-09-21}
12
+ s.date = %q{2009-09-24}
13
13
  s.description = %q{Create ActiveRecord models from an existing database}
14
14
  s.email = %q{alex@alexrothenberg.com}
15
15
  s.extra_rdoc_files = [
@@ -20,7 +20,7 @@ module OracleEnhancedAdapterConstraintsMethods
20
20
 
21
21
  # RSI: changed select from all_constraints to user_constraints - much faster in large data dictionaries
22
22
  fks = select_rows(<<-SQL, 'Remote Foriegn Keys')
23
- select c.table_name, cc.column_name
23
+ select c.table_name, cc.column_name, c.delete_rule
24
24
  from user_constraints c, user_constraints parent_c, user_cons_columns cc
25
25
  where c.owner = '#{owner}'
26
26
  and parent_c.table_name = '#{table_name}'
@@ -29,6 +29,17 @@ module OracleEnhancedAdapterConstraintsMethods
29
29
  and cc.owner = c.owner
30
30
  and cc.constraint_name = c.constraint_name
31
31
  SQL
32
+ fks.map do |row|
33
+ dependent = case row[3]
34
+ when 'CASCADE'
35
+ :destroy
36
+ when 'SET NULL'
37
+ :nullify
38
+ end
39
+ options = {:to_table => row[0].downcase, :foreign_key =>row[1].downcase.to_sym }
40
+ options[:dependent] = dependent unless dependent.nil?
41
+ options
42
+ end
32
43
  end
33
44
 
34
45
  def constraints(table_name)
@@ -105,7 +105,7 @@ module LegacyData
105
105
 
106
106
  has_some = {}
107
107
  connection.foreign_keys_of(table_name).each do |relation|
108
- has_some[relation.first.downcase] = relation.second.downcase.to_sym
108
+ has_some[relation.delete(:to_table).downcase] = relation
109
109
  end
110
110
  has_some
111
111
  end
@@ -34,7 +34,7 @@ module LegacyData
34
34
  other_table_name = join_table.belongs_to_tables.detect {|table_name| table_name != self.table_name}
35
35
  relations[:has_and_belongs_to_many][other_table_name] = { :foreign_key =>join_table.belongs_to_relations[table_name],
36
36
  :association_foreign_key=>join_table.belongs_to_relations[other_table_name],
37
- :join_table =>join_table.table_name }
37
+ :join_table =>join_table.table_name.to_sym }
38
38
  relations[:has_some].delete(join_table.table_name)
39
39
  end
40
40
  end
@@ -91,8 +91,10 @@ describe LegacyData::Schema do
91
91
 
92
92
  it 'should get all "has_some" (has_many and has_one) relationships when my primary key is the foreign key in another table ' do
93
93
  @connection.should_receive(:respond_to?).with(:foreign_keys_of).and_return(true)
94
- @connection.should_receive(:foreign_keys_of).and_return([['OTHER_TABLE', 'PK'], ['THE_TABLE', 'PK']])
95
- @schema.has_some_relations.should == {'other_table' => :pk, 'the_table' => :pk}
94
+ @connection.should_receive(:foreign_keys_of).and_return([ {:to_table=>'other_table', :foreign_key=>:pk, :dependent=>:destroy},
95
+ {:to_table=>'the_table', :foreign_key=>:pk, :dependent=>:destroy} ])
96
+ @schema.has_some_relations.should == {'other_table' => {:foreign_key=>:pk, :dependent=>:destroy},
97
+ 'the_table' => {:foreign_key=>:pk, :dependent=>:destroy}}
96
98
  end
97
99
 
98
100
  it 'should give no "belongs_to" when the adapter does not support foreign keys' do
@@ -59,7 +59,7 @@ describe LegacyData::TableDefinition do
59
59
  @posts.convert_has_many_to_habtm(@tag_posts)
60
60
 
61
61
  @posts.relations[:has_some ].should == {}
62
- @posts.relations[:has_and_belongs_to_many].should == {'tags' => {:foreign_key=>:posts_id, :association_foreign_key=>:tags_id, :join_table=>"tag_posts"} }
62
+ @posts.relations[:has_and_belongs_to_many].should == {'tags' => {:foreign_key=>:posts_id, :association_foreign_key=>:tags_id, :join_table=>:tag_posts} }
63
63
  end
64
64
  end
65
65
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alexrothenberg-legacy_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Rothenberg
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-21 00:00:00 -07:00
12
+ date: 2009-09-24 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency