ketsuban 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 4f7c4a677493a4b2a693280d0db1107aec0932ba
4
- data.tar.gz: 2c44b0a66a5bf05bd135a89da19a8597f2591e37
2
+ SHA256:
3
+ metadata.gz: 4867c4d589558084a2562c78eb9266aa2f1f43d7cc1f1acd8eefa54b8c710591
4
+ data.tar.gz: d79b8524b69862073197a4e92ff53cbb25f88870872c01c998bc59122b9893e9
5
5
  SHA512:
6
- metadata.gz: d49afbf4e5288f84b0eb6a20bd36c452b24b9608843f8995dfcbdf36b06e7dcdf38c753e473aa966f670a1f5fe9adf32b67ec06a7b24b5d1fa12439e90351d0e
7
- data.tar.gz: 4f1802118a2ee05cebfe50c68adb4c94a2aa410180ad772908ad927ebeb41101b2d699d837ff6bd99562a07844203347944a1e428e2f678b8f35c8188f0c8c7b
6
+ metadata.gz: 5a41b9db0b8a08fc43d1f790ed3774da4199a47f33737494551595e8600316eb0d87a03f7b61fa1f2ec41c6c8b309ba8b50e175b757269c172c1204ead418bd6
7
+ data.tar.gz: 13628fa0da1d14c55c01c6e62a94762f9b0170d22fa6dfaf5c591633b56c5f118d89a818550a18f9ade97a4bdd2d31241fb6b2f1dfb7d84883a5590fde3b15d6
@@ -6,7 +6,7 @@ module Ketsuban
6
6
  end
7
7
 
8
8
  def fetch_next_id
9
- @model_class.maximum(@model_class.primary_key)&.next || 1
9
+ raise 'Not implemented yet!'
10
10
  end
11
11
 
12
12
  def generate_next_id(now_id)
@@ -3,11 +3,30 @@ require_relative './abstract_adapter'
3
3
  module Ketsuban
4
4
  module Adapter
5
5
  class Mysql2Adapter < AbstractAdapter
6
+ # @override
7
+ def fetch_next_id
8
+ [max_id_now + 1, auto_incremental_id].max
9
+ end
10
+
6
11
  # @override
7
12
  def increment_sequence(_now_id)
8
13
  # do nothing
9
14
  nil
10
15
  end
16
+
17
+ private
18
+
19
+ def auto_incremental_id
20
+ @model_class
21
+ .connection
22
+ .execute("select auto_increment from information_schema.tables where table_name = '#{@model_class.table_name}'")
23
+ .first
24
+ .first
25
+ end
26
+
27
+ def max_id_now
28
+ @model_class.maximum(:id).presence || 0
29
+ end
11
30
  end
12
31
  end
13
32
  end
@@ -3,6 +3,22 @@ require_relative './abstract_adapter'
3
3
  module Ketsuban
4
4
  module Adapter
5
5
  class PostgreSQLAdapter < AbstractAdapter
6
+ # @override
7
+ def fetch_next_id
8
+ last_value_result = @model_class
9
+ .connection
10
+ .execute("select last_value, is_called from #{@model_class.sequence_name}\;")
11
+
12
+ last_value = last_value_result.getvalue(0, 0)
13
+ is_called = last_value_result.getvalue(0, 1)
14
+
15
+ if is_called
16
+ last_value.next
17
+ else
18
+ last_value
19
+ end
20
+ end
21
+
6
22
  # @override
7
23
  def increment_sequence(now_id)
8
24
  @model_class.connection.set_pk_sequence!(@model_class.table_name, now_id)
@@ -1,3 +1,3 @@
1
1
  module Ketsuban
2
- VERSION = '0.2.0'.freeze
2
+ VERSION = '0.2.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ketsuban
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - oieioi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-14 00:00:00.000000000 Z
11
+ date: 2019-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -134,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
134
  version: '0'
135
135
  requirements: []
136
136
  rubyforge_project:
137
- rubygems_version: 2.6.14
137
+ rubygems_version: 2.7.6
138
138
  signing_key:
139
139
  specification_version: 4
140
140
  summary: Skip unlucky numbers for ActiveRecord surrogate key