baza 0.0.3 → 0.0.4
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/VERSION +1 -1
- data/baza.gemspec +1 -1
- data/include/db.rb +5 -5
- data/include/query_buffer.rb +10 -9
- data/spec/baza_spec.rb +23 -6
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/baza.gemspec
CHANGED
data/include/db.rb
CHANGED
@@ -434,9 +434,9 @@ class Baza::Db
|
|
434
434
|
end
|
435
435
|
end
|
436
436
|
|
437
|
-
#Checks if a given
|
438
|
-
def upsert(table,
|
439
|
-
row = self.select(table,
|
437
|
+
#Checks if a given terms exists. If it does, updates it to match data. If not inserts the row.
|
438
|
+
def upsert(table, data, terms, args = nil)
|
439
|
+
row = self.select(table, terms, "limit" => 1).fetch
|
440
440
|
|
441
441
|
if args and args[:buffer]
|
442
442
|
obj = args[:buffer]
|
@@ -445,9 +445,9 @@ class Baza::Db
|
|
445
445
|
end
|
446
446
|
|
447
447
|
if row
|
448
|
-
obj.update(table, data,
|
448
|
+
obj.update(table, data, terms)
|
449
449
|
else
|
450
|
-
obj.insert(table,
|
450
|
+
obj.insert(table, terms.merge(data))
|
451
451
|
end
|
452
452
|
end
|
453
453
|
|
data/include/query_buffer.rb
CHANGED
@@ -34,9 +34,7 @@ class Baza::QueryBuffer
|
|
34
34
|
|
35
35
|
#Delete as on a normal Baza::Db.
|
36
36
|
#===Example
|
37
|
-
#
|
38
|
-
# buffer.delete(:users, {:id => 5})
|
39
|
-
# end
|
37
|
+
# buffer.delete(:users, {:id => 5})
|
40
38
|
def delete(table, where)
|
41
39
|
STDOUT.puts "Delete called on table #{table} with arguments: '#{where}'." if @debug
|
42
40
|
self.query(@args[:db].delete(table, where, :return_sql => true))
|
@@ -45,19 +43,22 @@ class Baza::QueryBuffer
|
|
45
43
|
|
46
44
|
#Update as on a normal Baza::Db.
|
47
45
|
#===Example
|
48
|
-
#
|
49
|
-
# buffer.update(:users, {:name => "Kasper"}, {:id => 5})
|
50
|
-
# end
|
46
|
+
# buffer.update(:users, {:name => "Kasper"}, {:id => 5})
|
51
47
|
def update(table, update, terms)
|
52
48
|
STDOUT.puts "Update called on table #{table}." if @debug
|
53
49
|
self.query(@args[:db].update(table, update, terms, :return_sql => true))
|
54
50
|
end
|
55
51
|
|
52
|
+
#Shortcut to doing upsert through the buffer instead of through the db-object with the buffer as an argument.
|
53
|
+
#===Example
|
54
|
+
# buffer.upsert(:users, {:id => 5}, {:name => "Kasper"})
|
55
|
+
def upsert(table, data, terms)
|
56
|
+
@args[:db].upsert(table, data, terms, :buffer => self)
|
57
|
+
end
|
58
|
+
|
56
59
|
#Plans to inset a hash into a table. It will only be inserted when flush is called.
|
57
60
|
#===Examples
|
58
|
-
#
|
59
|
-
# buffer.insert(:users, {:name => "John Doe"})
|
60
|
-
# end
|
61
|
+
# buffer.insert(:users, {:name => "John Doe"})
|
61
62
|
def insert(table, data)
|
62
63
|
@lock.synchronize do
|
63
64
|
@inserts[table] = [] if !@inserts.key?(table)
|
data/spec/baza_spec.rb
CHANGED
@@ -116,14 +116,14 @@ describe "Baza" do
|
|
116
116
|
table.reload
|
117
117
|
rows_count = table.rows_count
|
118
118
|
|
119
|
-
db.upsert(:test_table,
|
119
|
+
db.upsert(:test_table, data, sel)
|
120
120
|
row = db.select(:test_table, sel).fetch
|
121
121
|
row[:name].should eql("upsert - Kasper Johansen")
|
122
122
|
|
123
123
|
table.reload
|
124
124
|
table.rows_count.should eql(rows_count + 1)
|
125
125
|
|
126
|
-
db.upsert(:test_table,
|
126
|
+
db.upsert(:test_table, data2, sel)
|
127
127
|
row = db.select(:test_table, sel).fetch
|
128
128
|
row[:name].should eql("upsert - Kasper Nielsen Johansen")
|
129
129
|
|
@@ -301,20 +301,37 @@ describe "Baza" do
|
|
301
301
|
]
|
302
302
|
})
|
303
303
|
|
304
|
+
upsert = false
|
304
305
|
db.q_buffer do |buffer|
|
305
|
-
|
306
|
-
|
306
|
+
2500.times do |count|
|
307
|
+
if upsert
|
308
|
+
buffer.upsert(:test_table, {:name => "Kasper #{count}"}, {:name => "Kasper #{count}"})
|
309
|
+
upsert = false
|
310
|
+
else
|
311
|
+
buffer.insert(:test_table, {:name => "Kasper #{count}"})
|
312
|
+
upsert = true
|
313
|
+
end
|
307
314
|
end
|
308
315
|
end
|
309
316
|
|
310
317
|
test_table = db.tables[:test_table]
|
311
|
-
test_table.rows_count.should eql(
|
318
|
+
test_table.rows_count.should eql(2500)
|
312
319
|
|
313
320
|
db.q_buffer do |buffer|
|
314
321
|
count = 0
|
322
|
+
upsert = false
|
323
|
+
|
315
324
|
db.select(:test_table, {}, :orderby => :id) do |row|
|
316
325
|
row[:name].should eql("Kasper #{count}")
|
317
|
-
|
326
|
+
|
327
|
+
if upsert
|
328
|
+
buffer.upsert(:test_table, {:name => "Kasper #{count}-#{count}"}, {:id => row[:id]})
|
329
|
+
upsert = false
|
330
|
+
else
|
331
|
+
buffer.update(:test_table, {:name => "Kasper #{count}-#{count}"}, {:id => row[:id]})
|
332
|
+
upsert = true
|
333
|
+
end
|
334
|
+
|
318
335
|
count += 1
|
319
336
|
end
|
320
337
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: baza
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -218,7 +218,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
218
218
|
version: '0'
|
219
219
|
segments:
|
220
220
|
- 0
|
221
|
-
hash:
|
221
|
+
hash: 3400246052753672673
|
222
222
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
223
|
none: false
|
224
224
|
requirements:
|