jdbc-helper 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
@@ -12,6 +12,7 @@ require 'jdbc-helper/connection/row'
|
|
12
12
|
require 'jdbc-helper/wrapper/object_wrapper'
|
13
13
|
require 'jdbc-helper/wrapper/table_wrapper'
|
14
14
|
require 'jdbc-helper/wrapper/table_wrapper'
|
15
|
+
require 'jdbc-helper/wrapper/sequence_wrapper'
|
15
16
|
require 'jdbc-helper/wrapper/function_wrapper'
|
16
17
|
require 'jdbc-helper/wrapper/procedure_wrapper'
|
17
18
|
|
@@ -353,6 +354,14 @@ class Connection
|
|
353
354
|
JDBCHelper::TableWrapper.new self, table_name
|
354
355
|
end
|
355
356
|
|
357
|
+
# Returns a sequence wrapper for the given name
|
358
|
+
# @since 0.4.2
|
359
|
+
# @param [String/Symbol] sequence_name Name of the sequence to be wrapped
|
360
|
+
# @return [JDBCHelper::SequenceWrapper]
|
361
|
+
def sequence sequence_name
|
362
|
+
JDBCHelper::SequenceWrapper.new self, sequence_name
|
363
|
+
end
|
364
|
+
|
356
365
|
# Returns a function wrapper for the given function name
|
357
366
|
# @since 0.2.2
|
358
367
|
# @param [String/Symbol] func_name Name of the function to be wrapped
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# Junegunn Choi (junegunn.c@gmail.com)
|
3
|
+
|
4
|
+
module JDBCHelper
|
5
|
+
# A wrapper object representing a database sequence.
|
6
|
+
# @since 0.4.2
|
7
|
+
# @example Usage
|
8
|
+
# conn.sequence(:my_seq).create!(1)
|
9
|
+
# conn.sequence(:my_seq).nextval
|
10
|
+
# conn.sequence(:my_seq).currval
|
11
|
+
# conn.sequence(:my_seq).reset!(1)
|
12
|
+
# conn.sequence(:my_seq).drop!
|
13
|
+
class SequenceWrapper < ObjectWrapper
|
14
|
+
# Returns the name of the sequence
|
15
|
+
# @return [String]
|
16
|
+
alias to_s name
|
17
|
+
|
18
|
+
# Increments the sequence and returns the value
|
19
|
+
# @return [Fixnum]
|
20
|
+
def nextval
|
21
|
+
@connection.query("select #{name}.nextval from dual")[0][0].to_i
|
22
|
+
end
|
23
|
+
|
24
|
+
# Returns the incremented value of the sequence
|
25
|
+
# @return [Fixnum]
|
26
|
+
def currval
|
27
|
+
@connection.query("select #{name}.currval from dual")[0][0].to_i
|
28
|
+
end
|
29
|
+
|
30
|
+
# Recreates the sequence. Cannot be undone.
|
31
|
+
# @param [Fixnum] value Initial value
|
32
|
+
# @param [Fixnum] increment_by Increment size for a single nextval call
|
33
|
+
# @return [JDBCHelper::SequenceWrapper] Self.
|
34
|
+
def reset! value = 1, increment_by = 1
|
35
|
+
drop! rescue nil
|
36
|
+
create! value, increment_by
|
37
|
+
self
|
38
|
+
end
|
39
|
+
|
40
|
+
# Drops the sequence. Cannot be undone.
|
41
|
+
# @return [JDBCHelper::SequenceWrapper] Self.
|
42
|
+
def drop!
|
43
|
+
@connection.update("drop sequence #{name}")
|
44
|
+
self
|
45
|
+
end
|
46
|
+
|
47
|
+
# Creates the sequence. Cannot be undone.
|
48
|
+
# @param [Fixnum] value Initial value
|
49
|
+
# @param [Fixnum] increment_by Increment size for a single nextval call
|
50
|
+
# @return [JDBCHelper::SequenceWrapper] Self.
|
51
|
+
def create! value = 1, increment_by = 1
|
52
|
+
create = JDBCHelper::SQL.check(
|
53
|
+
"create sequence #{name} start with #{value} increment by #{increment_by}")
|
54
|
+
@connection.update(create)
|
55
|
+
self
|
56
|
+
end
|
57
|
+
end#SequenceWrapper
|
58
|
+
end#JDBCHelper
|
59
|
+
|
60
|
+
|
@@ -103,17 +103,21 @@ class TableWrapper < ObjectWrapper
|
|
103
103
|
|
104
104
|
# Empties the table.
|
105
105
|
# @note This operation cannot be undone
|
106
|
-
# @return [
|
107
|
-
def
|
106
|
+
# @return [JDBCHelper::TableWrapper] Self.
|
107
|
+
def truncate!
|
108
108
|
@connection.update(JDBCHelper::SQL.check "truncate table #{name}")
|
109
|
+
self
|
109
110
|
end
|
111
|
+
alias truncate_table! truncate!
|
110
112
|
|
111
113
|
# Drops the table.
|
112
114
|
# @note This operation cannot be undone
|
113
|
-
# @return [
|
114
|
-
def
|
115
|
+
# @return [JDBCHelper::TableWrapper] Self.
|
116
|
+
def drop!
|
115
117
|
@connection.update(JDBCHelper::SQL.check "drop table #{name}")
|
118
|
+
self
|
116
119
|
end
|
120
|
+
alias drop_table! truncate!
|
117
121
|
|
118
122
|
# Select SQL wrapper
|
119
123
|
include Enumerable
|
data/test/database.yml
CHANGED
@@ -5,9 +5,9 @@ mysql:
|
|
5
5
|
user: root
|
6
6
|
password:
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
oracle:
|
9
|
+
driver: oracle.jdbc.driver.OracleDriver
|
10
|
+
url: jdbc:oracle:thin:@10.20.253.105/didev
|
11
|
+
user: wisefn
|
12
|
+
password: wisefndb
|
13
13
|
|
data/test/test_object_wrapper.rb
CHANGED
@@ -339,7 +339,7 @@ class TestObjectWrapper < Test::Unit::TestCase
|
|
339
339
|
table = conn.table(@table_name)
|
340
340
|
insert table
|
341
341
|
|
342
|
-
table.
|
342
|
+
table.truncate!
|
343
343
|
assert table.empty?
|
344
344
|
end
|
345
345
|
end
|
@@ -348,10 +348,33 @@ class TestObjectWrapper < Test::Unit::TestCase
|
|
348
348
|
each_connection do |conn|
|
349
349
|
create_table conn
|
350
350
|
table = conn.table(@table_name)
|
351
|
-
table.
|
351
|
+
table.drop!
|
352
352
|
|
353
353
|
assert_equal false, drop_table(conn)
|
354
354
|
end
|
355
355
|
end
|
356
|
+
|
357
|
+
def test_sequence
|
358
|
+
each_connection do |conn|
|
359
|
+
# MySQL doesn't support sequences
|
360
|
+
next if @type == :mysql
|
361
|
+
|
362
|
+
seq = conn.sequence(@table_name + '_seq')
|
363
|
+
seq.reset!(100)
|
364
|
+
assert (prev = seq.nextval) >= 100
|
365
|
+
assert_equal prev, seq.currval
|
366
|
+
assert_equal 1, seq.nextval - prev
|
367
|
+
|
368
|
+
seq.reset! 1, 2
|
369
|
+
assert seq.nextval >= 1
|
370
|
+
assert seq.nextval <= 4
|
371
|
+
assert seq.nextval >= 5
|
372
|
+
|
373
|
+
seq.drop!
|
374
|
+
seq.create!(10)
|
375
|
+
assert seq.nextval >= 10
|
376
|
+
seq.drop!
|
377
|
+
end
|
378
|
+
end
|
356
379
|
end
|
357
380
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: jdbc-helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.4.
|
5
|
+
version: 0.4.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Junegunn Choi
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-06-
|
13
|
+
date: 2011-06-04 00:00:00 +09:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- lib/jdbc-helper/wrapper/function_wrapper.rb
|
85
85
|
- lib/jdbc-helper/wrapper/object_wrapper.rb
|
86
86
|
- lib/jdbc-helper/wrapper/procedure_wrapper.rb
|
87
|
+
- lib/jdbc-helper/wrapper/sequence_wrapper.rb
|
87
88
|
- lib/jdbc-helper/wrapper/table_wrapper.rb
|
88
89
|
- LICENSE.txt
|
89
90
|
- README.rdoc
|