vorpal 0.0.6.rc3 → 0.0.6.rc4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDJjYTFiMjk0N2U4NmYxYjI4NGIwMmY0N2VkOWZiYjRjZjI4OTFlOA==
4
+ OGZhMWQ2MGM3ZWZlZTJhZjkxOGVlMmZiYTkzODk4NTljNzk5NjU0MA==
5
5
  data.tar.gz: !binary |-
6
- OWJjZDM0Y2JiMGIzNGNlY2MxOWFmNDQwYWUyZTRiMDJiNDBkNmZmYw==
6
+ ZDMxYTEyMzI5OTQ0YmJkNDJmNjg3OGZjNzc5NDE2ZGUyNjc0M2Y4ZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NmU3YTQ2OGNkYzZjNTM3ODMxODc5NjlhZjFhOWFlMmNkMjRmMzg1NGE0ZGRm
10
- MGY3MWRlZjM0ZjFlOWFhNzI0N2Q2MzMwODMyYzFkODJlMzExZjBmZTAzNGE0
11
- NmUzODFkMWU3M2IzN2NhODA3YzZhMDU1OTllZjEyNzJlY2Q0ODI=
9
+ M2QxM2JlYWQ0NGE5Njg3YWZhYmI4MjdmNmVlZjVhZGIzOTA1YTZjMDYzYzVj
10
+ ZGViNjM3ZDI2YTY5MGNkZGRhZmNkMmI2YjUxZDYwYTVjYmI1ZjA5ZmVmNTgx
11
+ ZGIxZTZjZTQzYTQ2NzQ4ZWMxNWM2OThmYzIzNjAzMjYxNTVkMTE=
12
12
  data.tar.gz: !binary |-
13
- MWY5NzQ0N2Q2NjE5NDI4MmE4MzRmMDM4ZjI3M2M4NjQ1MTBhYzA4MWY3YTJm
14
- YmQxNDI2MTcwOWRkYmRlNjcwYTNiN2E4N2I1ZWU4ZmZiYTZkMWU1ZDE2NmZh
15
- NjA0OWJmMDg2Y2M4NDYzYzVhNjg5MTE0YTAzMTg4NDkzOTNmNTQ=
13
+ ZmExNTU3NGNiYmM1YjIxZjg3M2VlNjU0ODJmY2NjNmZlYTRkMDcyZTYzZTNm
14
+ YTkyZDUxMTI2NGI4MzhjYzg5NjBiMWNmNGUwOTI1ZWIzZDc5MDRiM2RmMmQx
15
+ MzEzYmI0ZWRmYzYyZjgyYjFmOTI5NDA3YTYzMzJlYmZkMzc1YzU=
@@ -102,7 +102,7 @@ class AggregateRepository
102
102
  return roots if roots.empty?
103
103
  loaded_db_objects = load_owned_from_db(roots.map(&:id), roots.first.class)
104
104
  loaded_db_objects.each do |config, db_objects|
105
- @db_driver.destroy(config.db_class, db_objects)
105
+ @db_driver.destroy(config, db_objects)
106
106
  end
107
107
  roots
108
108
  end
@@ -114,7 +114,7 @@ class AggregateRepository
114
114
  end
115
115
 
116
116
  def load_from_db(ids, domain_class, only_owned=false)
117
- DbLoader.new(@configs, only_owned, @db_driver).load_from_db(ids, domain_class)
117
+ DbLoader.new(only_owned, @db_driver).load_from_db(ids, @configs.config_for(domain_class))
118
118
  end
119
119
 
120
120
  def load_owned_from_db(ids, domain_class)
@@ -171,7 +171,7 @@ class AggregateRepository
171
171
  def set_primary_keys(owned_objects, mapping)
172
172
  owned_objects.each do |config, objects|
173
173
  in_need_of_primary_keys = objects.find_all { |obj| obj.id.nil? }
174
- primary_keys = @db_driver.get_primary_keys(config.db_class, in_need_of_primary_keys.length)
174
+ primary_keys = @db_driver.get_primary_keys(config, in_need_of_primary_keys.length)
175
175
  in_need_of_primary_keys.zip(primary_keys).each do |object, primary_key|
176
176
  mapping[object].id = primary_key
177
177
  object.id = primary_key
@@ -212,11 +212,11 @@ class AggregateRepository
212
212
  owned_objects.each do |config, objects|
213
213
  objects_to_insert = grouped_new_objects[config] || []
214
214
  db_objects_to_insert = objects_to_insert.map { |obj| mapping[obj] }
215
- @db_driver.insert(config.db_class, db_objects_to_insert)
215
+ @db_driver.insert(config, db_objects_to_insert)
216
216
 
217
217
  objects_to_update = objects - objects_to_insert
218
218
  db_objects_to_update = objects_to_update.map { |obj| mapping[obj] }
219
- @db_driver.update(config.db_class, db_objects_to_update)
219
+ @db_driver.update(config, db_objects_to_update)
220
220
  end
221
221
  end
222
222
 
@@ -226,7 +226,7 @@ class AggregateRepository
226
226
  all_orphans = db_objects_in_db - db_objects_in_aggregate
227
227
  grouped_orphans = all_orphans.group_by { |o| @configs.config_for_db_object(o) }
228
228
  grouped_orphans.each do |config, orphans|
229
- @db_driver.destroy(config.db_class, orphans)
229
+ @db_driver.destroy(config, orphans)
230
230
  end
231
231
  end
232
232
 
@@ -1,8 +1,12 @@
1
1
  module Vorpal
2
2
  class DbDriver
3
- def insert(db_class, db_objects)
3
+ def initialize
4
+ @sequence_names = {}
5
+ end
6
+
7
+ def insert(class_config, db_objects)
4
8
  if defined? ActiveRecord::Import
5
- db_class.import(db_objects, validate: false)
9
+ class_config.db_class.import(db_objects, validate: false)
6
10
  else
7
11
  db_objects.each do |db_object|
8
12
  db_object.save!(validate: false)
@@ -10,39 +14,43 @@ module Vorpal
10
14
  end
11
15
  end
12
16
 
13
- def update(db_class, db_objects)
17
+ def update(class_config, db_objects)
14
18
  db_objects.each do |db_object|
15
19
  db_object.save!(validate: false)
16
20
  end
17
21
  end
18
22
 
19
- def destroy(db_class, db_objects)
20
- db_class.delete_all(id: db_objects.map(&:id))
23
+ def destroy(class_config, db_objects)
24
+ class_config.db_class.delete_all(id: db_objects.map(&:id))
21
25
  end
22
26
 
23
- def load_by_id(db_class, ids)
24
- db_class.where(id: ids)
27
+ def load_by_id(class_config, ids)
28
+ class_config.db_class.where(id: ids)
25
29
  end
26
30
 
27
- def load_by_foreign_key(db_class, id, foreign_key_info)
28
- arel = db_class.where(foreign_key_info.fk_column => id)
31
+ def load_by_foreign_key(class_config, id, foreign_key_info)
32
+ arel = class_config.db_class.where(foreign_key_info.fk_column => id)
29
33
  arel = arel.where(foreign_key_info.fk_type_column => foreign_key_info.fk_type) if foreign_key_info.polymorphic?
30
34
  arel.order(:id).all
31
35
  end
32
36
 
33
- def get_primary_keys(db_class, count)
34
- result = execute("select nextval('#{sequence_name(db_class)}') from generate_series(1,#{count});")
35
- result.column_values(0).map(&:to_i)
37
+ def get_primary_keys(class_config, count)
38
+ result = execute("select nextval($1) from generate_series(1,$2);", [sequence_name(class_config), count])
39
+ result.rows.map(&:first).map(&:to_i)
36
40
  end
37
41
 
38
42
  private
39
43
 
40
- def execute(sql)
41
- ActiveRecord::Base.connection.execute(sql)
44
+ def sequence_name(class_config)
45
+ @sequence_names[class_config] ||= execute(
46
+ "SELECT substring(column_default from '''(.*)''') FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = $1 AND column_name = 'id' LIMIT 1",
47
+ [class_config.db_class.table_name]
48
+ ).rows.first.first
42
49
  end
43
50
 
44
- def sequence_name(db_class)
45
- "#{db_class.table_name}_id_seq"
51
+ def execute(sql, binds)
52
+ binds = binds.map { |row| [nil, row] }
53
+ ActiveRecord::Base.connection.exec_query(sql, 'SQL', binds)
46
54
  end
47
55
  end
48
56
  end
@@ -8,23 +8,21 @@ module Vorpal
8
8
  #
9
9
  # @private
10
10
  class DbLoader
11
- def initialize(configs, only_owned, driver)
12
- @configs = configs
11
+ def initialize(only_owned, db_driver)
13
12
  @only_owned = only_owned
14
- @driver = driver
13
+ @db_driver = db_driver
15
14
  end
16
15
 
17
- def load_from_db(ids, domain_class)
18
- config = @configs.config_for(domain_class)
16
+ def load_from_db(ids, config)
19
17
  @loaded_objects = LoadedObjects.new
20
18
  @lookup_instructions = LookupInstructions.new
21
19
  @lookup_instructions.lookup_by_id(config, ids)
22
20
 
23
21
  until @lookup_instructions.empty?
24
22
  lookup = @lookup_instructions.next_lookup
25
- new_objects = lookup.load_all(@driver)
23
+ new_objects = lookup.load_all(@db_driver)
26
24
  @loaded_objects.add(lookup.config, new_objects)
27
- explore_objects(new_objects)
25
+ explore_objects(lookup.config, new_objects)
28
26
  end
29
27
 
30
28
  @loaded_objects
@@ -32,9 +30,8 @@ class DbLoader
32
30
 
33
31
  private
34
32
 
35
- def explore_objects(objects_to_explore)
33
+ def explore_objects(config, objects_to_explore)
36
34
  objects_to_explore.each do |db_object|
37
- config = @configs.config_for_db_object(db_object)
38
35
  config.has_manys.each do |has_many_config|
39
36
  lookup_by_fk(db_object, has_many_config) if explore_association?(has_many_config)
40
37
  end
@@ -119,9 +116,9 @@ class LookupById
119
116
  @ids = ids
120
117
  end
121
118
 
122
- def load_all(driver)
119
+ def load_all(db_driver)
123
120
  return [] if @ids.empty?
124
- driver.load_by_id(@config.db_class, @ids)
121
+ db_driver.load_by_id(@config, @ids)
125
122
  end
126
123
  end
127
124
 
@@ -134,9 +131,9 @@ class LookupByFk
134
131
  @fk_values = fk_values
135
132
  end
136
133
 
137
- def load_all(driver)
134
+ def load_all(db_driver)
138
135
  return [] if @fk_values.empty?
139
- driver.load_by_foreign_key(@config.db_class, @fk_values, @fk_info)
136
+ db_driver.load_by_foreign_key(@config, @fk_values, @fk_info)
140
137
  end
141
138
  end
142
139
 
@@ -1,3 +1,3 @@
1
1
  module Vorpal
2
- VERSION = "0.0.6.rc3"
2
+ VERSION = "0.0.6.rc4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vorpal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6.rc3
4
+ version: 0.0.6.rc4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Kirby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-29 00:00:00.000000000 Z
11
+ date: 2015-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simple_serializer