sequel-sequence 0.3.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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