sequel-sequence 0.3.0 → 0.4.1
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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +44 -8
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +14 -0
- data/CONTRIBUTING.md +111 -13
- data/README.md +33 -10
- data/Rakefile +34 -1
- data/lib/sequel/error.rb +6 -6
- data/lib/sequel/sequence/database/postgresql.rb +3 -2
- data/lib/sequel/sequence/database/server/mariadb.rb +79 -0
- data/lib/sequel/sequence/database/server/mysql.rb +185 -0
- data/lib/sequel/sequence/database/sqlite.rb +18 -24
- data/lib/sequel/sequence/database.rb +12 -12
- data/lib/sequel/sequence/database_ext_connection.rb +29 -0
- data/lib/sequel/sequence/version.rb +1 -1
- data/lib/sequel/sequence.rb +1 -9
- data/sequel-sequence.gemspec +3 -2
- data/test/mariadb_test_helper.rb +32 -0
- data/test/mock_test_helper.rb +5 -0
- data/test/mysql_test_helper.rb +16 -9
- data/test/sequel/mariadb_sequence_test.rb +182 -0
- data/test/sequel/mock_sequence_test.rb +100 -0
- data/test/sequel/mysql_sequence_test.rb +230 -41
- data/test/sequel/sqlite_sequence_test.rb +86 -12
- data/test/sqlite_test_helper.rb +10 -2
- data/test/test_helper.rb +1 -0
- metadata +13 -6
- data/lib/sequel/sequence/database/mysql.rb +0 -10
- data/lib/sequel/sequence/database/mysql2.rb +0 -81
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel-sequence
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikolai Bocharov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-09-
|
11
|
+
date: 2023-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sequel
|
@@ -158,7 +158,8 @@ dependencies:
|
|
158
158
|
version: 1.6.0
|
159
159
|
description: |2
|
160
160
|
This gem provides a single interface for SEQUENCE functionality
|
161
|
-
in Postgresql and
|
161
|
+
in Postgresql and MariaDB DBMS within the Sequel ORM.
|
162
|
+
It also models the Sequences to meet the needs of SQLite and MySQL users.
|
162
163
|
email:
|
163
164
|
- it.architect@yahoo.com
|
164
165
|
executables: []
|
@@ -185,14 +186,19 @@ files:
|
|
185
186
|
- lib/sequel/error.rb
|
186
187
|
- lib/sequel/sequence.rb
|
187
188
|
- lib/sequel/sequence/database.rb
|
188
|
-
- lib/sequel/sequence/database/mysql.rb
|
189
|
-
- lib/sequel/sequence/database/mysql2.rb
|
190
189
|
- lib/sequel/sequence/database/postgresql.rb
|
190
|
+
- lib/sequel/sequence/database/server/mariadb.rb
|
191
|
+
- lib/sequel/sequence/database/server/mysql.rb
|
191
192
|
- lib/sequel/sequence/database/sqlite.rb
|
193
|
+
- lib/sequel/sequence/database_ext_connection.rb
|
192
194
|
- lib/sequel/sequence/version.rb
|
193
195
|
- sequel-sequence.gemspec
|
196
|
+
- test/mariadb_test_helper.rb
|
197
|
+
- test/mock_test_helper.rb
|
194
198
|
- test/mysql_test_helper.rb
|
195
199
|
- test/postgresql_test_helper.rb
|
200
|
+
- test/sequel/mariadb_sequence_test.rb
|
201
|
+
- test/sequel/mock_sequence_test.rb
|
196
202
|
- test/sequel/mysql_sequence_test.rb
|
197
203
|
- test/sequel/postgresql_sequence_test.rb
|
198
204
|
- test/sequel/sqlite_sequence_test.rb
|
@@ -223,5 +229,6 @@ requirements: []
|
|
223
229
|
rubygems_version: 3.4.19
|
224
230
|
signing_key:
|
225
231
|
specification_version: 4
|
226
|
-
summary:
|
232
|
+
summary: Adds SEQUENCE support to Sequel for migrations to PostgreSQL, MariaDB, MySQL
|
233
|
+
and SQLite.
|
227
234
|
test_files: []
|
@@ -1,81 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# https://sequel.jeremyevans.net/rdoc/files/doc/sql_rdoc.html
|
4
|
-
# https://github.com/jeremyevans/sequel/blob/master/lib/sequel/database/connecting.rb
|
5
|
-
module Sequel
|
6
|
-
module Sequence
|
7
|
-
module Database
|
8
|
-
module Mysql2
|
9
|
-
def quote_column_name(name)
|
10
|
-
"`#{name.gsub('`', '``')}`"
|
11
|
-
end
|
12
|
-
|
13
|
-
def quote_sequence_name(name)
|
14
|
-
"`#{name.gsub(/[`"']/, '')}`"
|
15
|
-
end
|
16
|
-
|
17
|
-
def check_sequences
|
18
|
-
fetch("SHOW FULL TABLES WHERE Table_type = 'SEQUENCE';").all.to_a
|
19
|
-
end
|
20
|
-
|
21
|
-
def create_sequence(name, options = {})
|
22
|
-
increment = options[:increment] || options[:step]
|
23
|
-
if_exists = build_exists_condition(options[:if_exists])
|
24
|
-
name = quote_name(name.to_s)
|
25
|
-
|
26
|
-
sql = ["CREATE SEQUENCE #{if_exists} #{name}"]
|
27
|
-
sql << "INCREMENT BY #{increment}" if increment
|
28
|
-
sql << "START WITH #{options[:start]}" if options[:start]
|
29
|
-
sql << ';'
|
30
|
-
|
31
|
-
run(sql.join("\n"))
|
32
|
-
end
|
33
|
-
|
34
|
-
def drop_sequence(name)
|
35
|
-
name = quote_name(name.to_s)
|
36
|
-
sql = "DROP SEQUENCE IF EXISTS #{name}"
|
37
|
-
run(sql)
|
38
|
-
end
|
39
|
-
|
40
|
-
def nextval(name)
|
41
|
-
name = quote(name.to_s)
|
42
|
-
out = nil
|
43
|
-
fetch("SELECT nextval(#{name});") do |row|
|
44
|
-
out = row["nextval(#{name})".to_sym]
|
45
|
-
end
|
46
|
-
out
|
47
|
-
end
|
48
|
-
|
49
|
-
# for db.database_type = :mysql2
|
50
|
-
def lastval(name)
|
51
|
-
name = quote(name.to_s)
|
52
|
-
out = nil
|
53
|
-
fetch("SELECT lastval(#{name});") do |row|
|
54
|
-
out = row["lastval(#{name})".to_sym]
|
55
|
-
end
|
56
|
-
out
|
57
|
-
end
|
58
|
-
|
59
|
-
# for db.database_type = :postgres
|
60
|
-
alias currval lastval
|
61
|
-
|
62
|
-
def setval(name, value)
|
63
|
-
name = quote(name.to_s)
|
64
|
-
out = nil
|
65
|
-
fetch("SELECT setval(#{name}, #{value});") do |row|
|
66
|
-
out = row["setval(#{name}, #{value})".to_sym]
|
67
|
-
end
|
68
|
-
out
|
69
|
-
end
|
70
|
-
|
71
|
-
def set_column_default_nextval(table, column, sequence)
|
72
|
-
table = table.to_s
|
73
|
-
column = column.to_s
|
74
|
-
sequence = quote(sequence.to_s)
|
75
|
-
run "ALTER TABLE IF EXISTS #{table} " \
|
76
|
-
"ALTER COLUMN #{column} SET DEFAULT nextval(#{sequence});"
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|