jdbc-helper 0.4.1 → 0.4.2

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.
@@ -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 [Fixnum] executeUpdate return value
107
- def truncate_table!
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 [Fixnum] executeUpdate return value
114
- def drop_table!
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
- #oracle:
9
- #driver: oracle.jdbc.driver.OracleDriver
10
- #url: jdbc:oracle:thin:@localhost/test
11
- #user: testuser
12
- #password: testpassword
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
 
@@ -339,7 +339,7 @@ class TestObjectWrapper < Test::Unit::TestCase
339
339
  table = conn.table(@table_name)
340
340
  insert table
341
341
 
342
- table.truncate_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.drop_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.1
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-01 00:00:00 +09:00
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