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.
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.3.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-21 00:00:00.000000000 Z
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 Mysql databases within the Sequel ORM.
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: Add support for PostgreSQL's and MySQL's SEQUENCE on Sequel migrations.
232
+ summary: Adds SEQUENCE support to Sequel for migrations to PostgreSQL, MariaDB, MySQL
233
+ and SQLite.
227
234
  test_files: []
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sequel
4
- module Sequence
5
- module Database
6
- module Mysql
7
- end
8
- end
9
- end
10
- end
@@ -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