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 [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