sequelizer 0.1.4 → 0.2.0

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.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.beads/.gitignore +54 -0
  3. data/.beads/.jsonl.lock +0 -0
  4. data/.beads/.migration-hint-ts +1 -0
  5. data/.beads/README.md +81 -0
  6. data/.beads/config.yaml +42 -0
  7. data/.beads/issues.jsonl +20 -0
  8. data/.beads/metadata.json +7 -0
  9. data/.coderabbit.yaml +94 -0
  10. data/.devcontainer/.p10k.zsh +1713 -0
  11. data/.devcontainer/.zshrc +29 -0
  12. data/.devcontainer/Dockerfile +137 -0
  13. data/.devcontainer/copy-claude-credentials.sh +32 -0
  14. data/.devcontainer/devcontainer.json +102 -0
  15. data/.devcontainer/init-firewall.sh +123 -0
  16. data/.devcontainer/setup-credentials.sh +95 -0
  17. data/.github/dependabot.yml +18 -0
  18. data/.github/workflows/dependabot-auto-merge.yml +36 -0
  19. data/.github/workflows/test.yml +44 -9
  20. data/.gitignore +6 -1
  21. data/.overcommit.yml +73 -0
  22. data/.rubocop.yml +167 -0
  23. data/AGENTS.md +126 -0
  24. data/CHANGELOG.md +41 -0
  25. data/CLAUDE.md +230 -0
  26. data/Gemfile +6 -2
  27. data/Gemfile.lock +189 -0
  28. data/Guardfile +1 -1
  29. data/Rakefile +28 -3
  30. data/config/platforms/base.csv +5 -0
  31. data/config/platforms/rdbms/athena.csv +4 -0
  32. data/config/platforms/rdbms/postgres.csv +3 -0
  33. data/config/platforms/rdbms/snowflake.csv +1 -0
  34. data/config/platforms/rdbms/spark.csv +3 -0
  35. data/lib/sequel/extensions/cold_col.rb +436 -0
  36. data/lib/sequel/extensions/db_opts.rb +65 -4
  37. data/lib/sequel/extensions/funky.rb +136 -0
  38. data/lib/sequel/extensions/make_readyable.rb +146 -30
  39. data/lib/sequel/extensions/more_sql.rb +76 -0
  40. data/lib/sequel/extensions/platform.rb +301 -0
  41. data/lib/sequel/extensions/settable.rb +64 -0
  42. data/lib/sequel/extensions/sql_recorder.rb +85 -0
  43. data/lib/sequel/extensions/unionize.rb +169 -0
  44. data/lib/sequel/extensions/usable.rb +30 -1
  45. data/lib/sequelizer/cli.rb +61 -18
  46. data/lib/sequelizer/connection_maker.rb +54 -72
  47. data/lib/sequelizer/env_config.rb +6 -6
  48. data/lib/sequelizer/gemfile_modifier.rb +23 -21
  49. data/lib/sequelizer/monkey_patches/database_in_after_connect.rb +7 -5
  50. data/lib/sequelizer/options.rb +102 -19
  51. data/lib/sequelizer/options_hash.rb +2 -0
  52. data/lib/sequelizer/version.rb +3 -1
  53. data/lib/sequelizer/yaml_config.rb +9 -4
  54. data/lib/sequelizer.rb +65 -9
  55. data/sequelizer.gemspec +20 -12
  56. data/test/lib/sequel/extensions/test_cold_col.rb +251 -0
  57. data/test/lib/sequel/extensions/test_db_opts.rb +10 -8
  58. data/test/lib/sequel/extensions/test_make_readyable.rb +198 -28
  59. data/test/lib/sequel/extensions/test_more_sql.rb +132 -0
  60. data/test/lib/sequel/extensions/test_platform.rb +222 -0
  61. data/test/lib/sequel/extensions/test_settable.rb +109 -0
  62. data/test/lib/sequel/extensions/test_sql_recorder.rb +231 -0
  63. data/test/lib/sequel/extensions/test_unionize.rb +76 -0
  64. data/test/lib/sequel/extensions/test_usable.rb +5 -2
  65. data/test/lib/sequelizer/test_connection_maker.rb +21 -17
  66. data/test/lib/sequelizer/test_env_config.rb +5 -2
  67. data/test/lib/sequelizer/test_gemfile_modifier.rb +7 -6
  68. data/test/lib/sequelizer/test_options.rb +42 -9
  69. data/test/lib/sequelizer/test_yaml_config.rb +13 -12
  70. data/test/test_helper.rb +37 -8
  71. metadata +196 -39
  72. data/lib/sequel/extensions/sqls.rb +0 -31
@@ -1,8 +1,8 @@
1
1
  require_relative '../../test_helper'
2
2
  require 'sequelizer/options'
3
3
 
4
-
5
4
  class TestOptions < Minitest::Test
5
+
6
6
  def test_changes_postgresql_adapter_to_postgres
7
7
  options = Sequelizer::Options.new(Sequelizer::OptionsHash.new(adapter: 'postgresql'))
8
8
 
@@ -30,19 +30,22 @@ class TestOptions < Minitest::Test
30
30
  end
31
31
 
32
32
  def test_prefers_search_path_over_schema_search_path
33
- options = Sequelizer::Options.new(Sequelizer::OptionsHash.new(adapter: 'postgres', search_path: 'path', schema_search_path: 'path2'))
33
+ options = Sequelizer::Options.new(Sequelizer::OptionsHash.new(adapter: 'postgres', search_path: 'path',
34
+ schema_search_path: 'path2'))
34
35
 
35
36
  assert_equal('path', options.search_path)
36
37
  end
37
38
 
38
39
  def test_returns_timeout_as_an_integer_even_if_given_string
39
- options = Sequelizer::Options.new({timeout: "30"})
40
+ options = Sequelizer::Options.new({ timeout: '30' })
41
+
40
42
  assert_equal(30, options.to_hash[:timeout])
41
43
  end
42
44
 
43
45
  def test_returns_a_hash_even_if_given_nil
44
46
  Sequelizer::YamlConfig.stub :user_config_path, Pathname.new('/completely/made/up/path/that/does/not/exist') do
45
47
  options = Sequelizer::Options.new
48
+
46
49
  assert_equal(1, options.to_hash.length)
47
50
  assert_instance_of(Proc, options.to_hash[:after_connect])
48
51
  end
@@ -50,6 +53,7 @@ class TestOptions < Minitest::Test
50
53
 
51
54
  def test_handles_symbolized_search_path
52
55
  options = Sequelizer::Options.new(search_path: 'passed', adapter: 'postgres')
56
+
53
57
  assert_equal 'passed', options.search_path
54
58
  end
55
59
 
@@ -60,19 +64,48 @@ class TestOptions < Minitest::Test
60
64
  conny.expect :db, db
61
65
  conny.expect :db, db
62
66
 
63
- procky = Proc.new { |conn| conn.db[:table].to_a }
67
+ procky = proc { |conn| conn.db[:table].to_a }
64
68
 
65
69
  options = Sequelizer::Options.new(after_connect: procky)
66
70
  options.to_hash[:after_connect].call(conny, :default, db)
67
71
 
68
- assert_equal(["SELECT * FROM \"table\""], db.sqls)
72
+ assert_equal(['SELECT * FROM "table"'], db.sqls)
73
+ end
74
+
75
+ def test_url_based_connection_processes_search_path
76
+ options = Sequelizer::Options.new(
77
+ Sequelizer::OptionsHash.new(url: 'postgres://localhost/mydb', search_path: 'my_schema'),
78
+ )
79
+
80
+ assert_equal('my_schema', options.search_path)
81
+ assert_instance_of(Proc, options.to_hash[:after_connect])
82
+ end
83
+
84
+ def test_url_based_connection_processes_schema_as_search_path
85
+ options = Sequelizer::Options.new(
86
+ Sequelizer::OptionsHash.new(url: 'postgresql://localhost/mydb', schema: 'my_schema'),
87
+ )
88
+
89
+ assert_equal('my_schema', options.search_path)
90
+ end
91
+
92
+ def test_url_based_connection_skips_search_path_processing_for_non_postgres
93
+ options = Sequelizer::Options.new(
94
+ Sequelizer::OptionsHash.new(url: 'mysql2://localhost/mydb', search_path: 'my_schema'),
95
+ )
96
+
97
+ # search_path key remains but is NOT processed (no schema creation callback)
98
+ assert_equal('my_schema', options.search_path)
99
+ # adapter should not be normalized to 'postgres'
100
+ assert_nil(options.adapter)
69
101
  end
70
102
 
71
103
  def test_handles_extensions_passed_in
72
- options = Sequelizer::Options.new(extension_example_1: 1, extension_example_2: 1, not_an_extension_example: 1)
104
+ options = Sequelizer::Options.new(extension_example_one: 1, extension_example_two: 1, not_an_extension_example: 1)
105
+
73
106
  assert_equal 1, options.to_hash[:not_an_extension_example]
74
- assert options.extensions.include?(:example_1), "Failed to find example_1 in extensions"
75
- assert options.extensions.include?(:example_2), "Failed to find example_2 in extensions"
107
+ assert_includes options.extensions, :example_one, 'Failed to find example_one in extensions'
108
+ assert_includes options.extensions, :example_two, 'Failed to find example_two in extensions'
76
109
  end
77
- end
78
110
 
111
+ end
@@ -1,21 +1,19 @@
1
1
  require_relative '../../test_helper'
2
2
  require 'sequelizer/yaml_config'
3
3
 
4
-
5
4
  class TestYamlConfig < Minitest::Test
5
+
6
6
  def setup
7
7
  @yaml_config = Sequelizer::YamlConfig.new
8
8
  end
9
9
 
10
- def with_empty_env
10
+ def with_empty_env(&)
11
11
  env_mock = Minitest::Mock.new
12
12
  env_mock.expect :[], nil, ['SEQUELIZER_ENV']
13
13
  env_mock.expect :[], nil, ['RAILS_ENV']
14
14
  env_mock.expect :[], nil, ['RACK_ENV']
15
15
 
16
- stub_const(Sequelizer::YamlConfig, :ENV, env_mock) do
17
- yield
18
- end
16
+ stub_const(Sequelizer::YamlConfig, :ENV, env_mock, &)
19
17
 
20
18
  env_mock.verify
21
19
  end
@@ -41,7 +39,7 @@ class TestYamlConfig < Minitest::Test
41
39
  file_mock = Minitest::Mock.new
42
40
  file_mock.expect :exist?, true
43
41
  @yaml_config.stub :config_file_path, file_mock do
44
- @yaml_config.stub :config, {'development' => { 'adapter' => 'sqlite' }} do
42
+ @yaml_config.stub :config, { 'development' => { 'adapter' => 'sqlite' } } do
45
43
  with_empty_env do
46
44
  assert_equal({ 'adapter' => 'sqlite' }, @yaml_config.options)
47
45
  end
@@ -51,27 +49,29 @@ class TestYamlConfig < Minitest::Test
51
49
  end
52
50
 
53
51
  def test_options_default_to_empty_hash
54
- assert_equal(@yaml_config.options, {})
52
+ assert_empty(@yaml_config.options)
55
53
  end
56
54
 
57
55
  def test_path_defaults_to_local_config
58
- assert_equal(@yaml_config.config_file_path, Pathname.pwd + "config" + "sequelizer.yml")
56
+ assert_equal(@yaml_config.config_file_path, Pathname.pwd.join('config', 'sequelizer.yml'))
59
57
  end
60
58
 
61
59
  def test_path_can_be_fed_pathanem_from_initialize
62
- assert_equal(Sequelizer::YamlConfig.new(Pathname.new("~") + ".config").config_file_path, Pathname.new("~").expand_path + ".config")
60
+ assert_equal(Sequelizer::YamlConfig.new(Pathname.new('~').join('.config')).config_file_path,
61
+ Pathname.new('~').expand_path.join('.config'))
63
62
  end
64
63
 
65
64
  def test_path_can_be_fed_string_from_initialize
66
- assert_equal(Sequelizer::YamlConfig.new("~/.config").config_file_path, Pathname.new("~").expand_path + ".config")
65
+ assert_equal(Sequelizer::YamlConfig.new('~/.config').config_file_path, Pathname.new('~/.config').expand_path)
67
66
  end
68
67
 
69
68
  def test_local_is_current_directory
70
- assert_equal(Sequelizer::YamlConfig.local_config.config_file_path, Pathname.pwd + "config" + "sequelizer.yml")
69
+ assert_equal(Sequelizer::YamlConfig.local_config.config_file_path, Pathname.pwd.join('config', 'sequelizer.yml'))
71
70
  end
72
71
 
73
72
  def test_home_uses_home_directory
74
- assert_equal(Sequelizer::YamlConfig.user_config.config_file_path, Pathname.new("~").expand_path + ".config" + "sequelizer" + "database.yml")
73
+ assert_equal(Sequelizer::YamlConfig.user_config.config_file_path,
74
+ Pathname.new(Dir.home).join('.config', 'sequelizer', 'database.yml'))
75
75
  end
76
76
 
77
77
  def test_environment_checks_environment_variables
@@ -79,4 +79,5 @@ class TestYamlConfig < Minitest::Test
79
79
  assert_equal 'development', @yaml_config.environment
80
80
  end
81
81
  end
82
+
82
83
  end
data/test/test_helper.rb CHANGED
@@ -1,16 +1,45 @@
1
+ # Disable Rails plugins for Minitest to avoid version conflicts
2
+ ENV['MT_NO_PLUGINS'] = '1'
3
+
4
+ # SimpleCov must be loaded before application code
5
+ require 'simplecov'
6
+
7
+ SimpleCov.start do
8
+ add_filter '/test/'
9
+ add_filter '/vendor/'
10
+
11
+ add_group 'Core', 'lib/sequelizer'
12
+ add_group 'Sequel Extensions', 'lib/sequel'
13
+
14
+ # Temporarily lower minimum coverage to see what we're working with
15
+ minimum_coverage 70
16
+ minimum_coverage_by_file 40
17
+
18
+ # Generate both HTML and JSON for easier analysis
19
+ formatter SimpleCov::Formatter::MultiFormatter.new([
20
+ SimpleCov::Formatter::HTMLFormatter,
21
+ SimpleCov::Formatter::SimpleFormatter,
22
+ ])
23
+ end
24
+
1
25
  require 'minitest/autorun'
2
- require "sequel"
26
+ require 'minitest/mock'
27
+ require 'sequel'
28
+
29
+ module Minitest
30
+ class Test
31
+
32
+ def stub_const(klass, const, replace)
33
+ klass.send(:const_set, const, replace)
34
+ return unless block_given?
3
35
 
4
- class Minitest::Test
5
- def stub_const(klass, const, replace, &block)
6
- klass.send(:const_set, const, replace)
7
- if block_given?
8
36
  yield
9
37
  remove_stubbed_const(klass, const)
10
38
  end
11
- end
12
39
 
13
- def remove_stubbed_const(klass, const)
14
- klass.send(:remove_const, const)
40
+ def remove_stubbed_const(klass, const)
41
+ klass.send(:remove_const, const)
42
+ end
43
+
15
44
  end
16
45
  end
metadata CHANGED
@@ -1,27 +1,26 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequelizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Duryea
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-04-03 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ">="
18
17
  - !ruby/object:Gem::Version
19
18
  version: '2.0'
20
19
  type: :development
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - "~>"
23
+ - - ">="
25
24
  - !ruby/object:Gem::Version
26
25
  version: '2.0'
27
26
  - !ruby/object:Gem::Dependency
@@ -44,98 +43,228 @@ dependencies:
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: '2.3'
46
+ version: '3.0'
48
47
  type: :development
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
- version: '2.3'
53
+ version: '3.0'
55
54
  - !ruby/object:Gem::Dependency
56
55
  name: minitest
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: '5.3'
60
+ version: '6.0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '6.0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: minitest-mock
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '5.27'
62
75
  type: :development
63
76
  prerelease: false
64
77
  version_requirements: !ruby/object:Gem::Requirement
65
78
  requirements:
66
79
  - - "~>"
67
80
  - !ruby/object:Gem::Version
68
- version: '5.3'
81
+ version: '5.27'
82
+ - !ruby/object:Gem::Dependency
83
+ name: pg
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.0'
69
96
  - !ruby/object:Gem::Dependency
70
97
  name: rake
71
98
  requirement: !ruby/object:Gem::Requirement
72
99
  requirements:
73
100
  - - "~>"
74
101
  - !ruby/object:Gem::Version
75
- version: '12.0'
102
+ version: '13.3'
76
103
  type: :development
77
104
  prerelease: false
78
105
  version_requirements: !ruby/object:Gem::Requirement
79
106
  requirements:
80
107
  - - "~>"
81
108
  - !ruby/object:Gem::Version
82
- version: '12.0'
109
+ version: '13.3'
83
110
  - !ruby/object:Gem::Dependency
84
- name: sequel
111
+ name: rubocop
85
112
  requirement: !ruby/object:Gem::Requirement
86
113
  requirements:
87
114
  - - "~>"
88
115
  - !ruby/object:Gem::Version
89
- version: '5.0'
90
- type: :runtime
116
+ version: '1.0'
117
+ type: :development
91
118
  prerelease: false
92
119
  version_requirements: !ruby/object:Gem::Requirement
93
120
  requirements:
94
121
  - - "~>"
95
122
  - !ruby/object:Gem::Version
96
- version: '5.0'
123
+ version: '1.0'
97
124
  - !ruby/object:Gem::Dependency
98
- name: dotenv
125
+ name: rubocop-minitest
99
126
  requirement: !ruby/object:Gem::Requirement
100
127
  requirements:
101
128
  - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '0.25'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '0.25'
138
+ - !ruby/object:Gem::Dependency
139
+ name: simplecov
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '0.22'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '0.22'
152
+ - !ruby/object:Gem::Dependency
153
+ name: activesupport
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '7'
159
+ - - "<"
160
+ - !ruby/object:Gem::Version
161
+ version: '9'
162
+ type: :runtime
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '7'
169
+ - - "<"
170
+ - !ruby/object:Gem::Version
171
+ version: '9'
172
+ - !ruby/object:Gem::Dependency
173
+ name: dotenv
174
+ requirement: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
102
177
  - !ruby/object:Gem::Version
103
178
  version: '2.1'
179
+ - - "<"
180
+ - !ruby/object:Gem::Version
181
+ version: '4.0'
104
182
  type: :runtime
105
183
  prerelease: false
106
184
  version_requirements: !ruby/object:Gem::Requirement
107
185
  requirements:
108
- - - "~>"
186
+ - - ">="
109
187
  - !ruby/object:Gem::Version
110
188
  version: '2.1'
189
+ - - "<"
190
+ - !ruby/object:Gem::Version
191
+ version: '4.0'
111
192
  - !ruby/object:Gem::Dependency
112
- name: thor
193
+ name: hashie
194
+ requirement: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: '3.2'
199
+ - - "<"
200
+ - !ruby/object:Gem::Version
201
+ version: '6.0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '3.2'
209
+ - - "<"
210
+ - !ruby/object:Gem::Version
211
+ version: '6.0'
212
+ - !ruby/object:Gem::Dependency
213
+ name: kvcsv
113
214
  requirement: !ruby/object:Gem::Requirement
114
215
  requirements:
115
216
  - - "~>"
116
217
  - !ruby/object:Gem::Version
117
- version: '1.0'
218
+ version: '0.1'
118
219
  type: :runtime
119
220
  prerelease: false
120
221
  version_requirements: !ruby/object:Gem::Requirement
121
222
  requirements:
122
223
  - - "~>"
123
224
  - !ruby/object:Gem::Version
124
- version: '1.0'
225
+ version: '0.1'
125
226
  - !ruby/object:Gem::Dependency
126
- name: hashie
227
+ name: pp
228
+ requirement: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ version: '0'
233
+ type: :runtime
234
+ prerelease: false
235
+ version_requirements: !ruby/object:Gem::Requirement
236
+ requirements:
237
+ - - ">="
238
+ - !ruby/object:Gem::Version
239
+ version: '0'
240
+ - !ruby/object:Gem::Dependency
241
+ name: sequel
127
242
  requirement: !ruby/object:Gem::Requirement
128
243
  requirements:
129
244
  - - "~>"
130
245
  - !ruby/object:Gem::Version
131
- version: '3.2'
246
+ version: '5.93'
132
247
  type: :runtime
133
248
  prerelease: false
134
249
  version_requirements: !ruby/object:Gem::Requirement
135
250
  requirements:
136
251
  - - "~>"
137
252
  - !ruby/object:Gem::Version
138
- version: '3.2'
253
+ version: '5.93'
254
+ - !ruby/object:Gem::Dependency
255
+ name: thor
256
+ requirement: !ruby/object:Gem::Requirement
257
+ requirements:
258
+ - - "~>"
259
+ - !ruby/object:Gem::Version
260
+ version: '1.0'
261
+ type: :runtime
262
+ prerelease: false
263
+ version_requirements: !ruby/object:Gem::Requirement
264
+ requirements:
265
+ - - "~>"
266
+ - !ruby/object:Gem::Version
267
+ version: '1.0'
139
268
  description: Easily establish a connection to a database via Sequel gem using options
140
269
  specified in config/database.yml or .env files
141
270
  email:
@@ -145,22 +274,54 @@ executables:
145
274
  extensions: []
146
275
  extra_rdoc_files: []
147
276
  files:
277
+ - ".beads/.gitignore"
278
+ - ".beads/.jsonl.lock"
279
+ - ".beads/.migration-hint-ts"
280
+ - ".beads/README.md"
281
+ - ".beads/config.yaml"
282
+ - ".beads/issues.jsonl"
283
+ - ".beads/metadata.json"
284
+ - ".coderabbit.yaml"
285
+ - ".devcontainer/.p10k.zsh"
286
+ - ".devcontainer/.zshrc"
287
+ - ".devcontainer/Dockerfile"
288
+ - ".devcontainer/copy-claude-credentials.sh"
289
+ - ".devcontainer/devcontainer.json"
290
+ - ".devcontainer/init-firewall.sh"
291
+ - ".devcontainer/setup-credentials.sh"
292
+ - ".github/dependabot.yml"
293
+ - ".github/workflows/dependabot-auto-merge.yml"
148
294
  - ".github/workflows/test.yml"
149
295
  - ".gitignore"
296
+ - ".overcommit.yml"
297
+ - ".rubocop.yml"
298
+ - AGENTS.md
150
299
  - CHANGELOG.md
300
+ - CLAUDE.md
151
301
  - Gemfile
302
+ - Gemfile.lock
152
303
  - Guardfile
153
304
  - LICENSE.txt
154
305
  - README.md
155
306
  - Rakefile
156
307
  - bin/sequelizer
308
+ - config/platforms/base.csv
309
+ - config/platforms/rdbms/athena.csv
310
+ - config/platforms/rdbms/postgres.csv
311
+ - config/platforms/rdbms/snowflake.csv
312
+ - config/platforms/rdbms/spark.csv
157
313
  - examples/database.with_one_set_of_options.yml
158
314
  - examples/database.yml
159
315
  - examples/dot_env.txt
316
+ - lib/sequel/extensions/cold_col.rb
160
317
  - lib/sequel/extensions/db_opts.rb
318
+ - lib/sequel/extensions/funky.rb
161
319
  - lib/sequel/extensions/make_readyable.rb
320
+ - lib/sequel/extensions/more_sql.rb
321
+ - lib/sequel/extensions/platform.rb
162
322
  - lib/sequel/extensions/settable.rb
163
- - lib/sequel/extensions/sqls.rb
323
+ - lib/sequel/extensions/sql_recorder.rb
324
+ - lib/sequel/extensions/unionize.rb
164
325
  - lib/sequel/extensions/usable.rb
165
326
  - lib/sequelizer.rb
166
327
  - lib/sequelizer/cli.rb
@@ -173,8 +334,14 @@ files:
173
334
  - lib/sequelizer/version.rb
174
335
  - lib/sequelizer/yaml_config.rb
175
336
  - sequelizer.gemspec
337
+ - test/lib/sequel/extensions/test_cold_col.rb
176
338
  - test/lib/sequel/extensions/test_db_opts.rb
177
339
  - test/lib/sequel/extensions/test_make_readyable.rb
340
+ - test/lib/sequel/extensions/test_more_sql.rb
341
+ - test/lib/sequel/extensions/test_platform.rb
342
+ - test/lib/sequel/extensions/test_settable.rb
343
+ - test/lib/sequel/extensions/test_sql_recorder.rb
344
+ - test/lib/sequel/extensions/test_unionize.rb
178
345
  - test/lib/sequel/extensions/test_usable.rb
179
346
  - test/lib/sequelizer/test_connection_maker.rb
180
347
  - test/lib/sequelizer/test_env_config.rb
@@ -185,8 +352,8 @@ files:
185
352
  homepage: https://github.com/outcomesinsights/sequelizer
186
353
  licenses:
187
354
  - MIT
188
- metadata: {}
189
- post_install_message:
355
+ metadata:
356
+ rubygems_mfa_required: 'true'
190
357
  rdoc_options: []
191
358
  require_paths:
192
359
  - lib
@@ -194,24 +361,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
194
361
  requirements:
195
362
  - - ">="
196
363
  - !ruby/object:Gem::Version
197
- version: '0'
364
+ version: 3.2.0
198
365
  required_rubygems_version: !ruby/object:Gem::Requirement
199
366
  requirements:
200
367
  - - ">="
201
368
  - !ruby/object:Gem::Version
202
369
  version: '0'
203
370
  requirements: []
204
- rubygems_version: 3.4.6
205
- signing_key:
371
+ rubygems_version: 3.6.9
206
372
  specification_version: 4
207
373
  summary: Sequel database connections via config/database.yml or .env
208
- test_files:
209
- - test/lib/sequel/extensions/test_db_opts.rb
210
- - test/lib/sequel/extensions/test_make_readyable.rb
211
- - test/lib/sequel/extensions/test_usable.rb
212
- - test/lib/sequelizer/test_connection_maker.rb
213
- - test/lib/sequelizer/test_env_config.rb
214
- - test/lib/sequelizer/test_gemfile_modifier.rb
215
- - test/lib/sequelizer/test_options.rb
216
- - test/lib/sequelizer/test_yaml_config.rb
217
- - test/test_helper.rb
374
+ test_files: []
@@ -1,31 +0,0 @@
1
- # frozen-string-literal: true
2
- #
3
- # The sqls extension will record each SQL statement sent to the
4
- # database
5
- #
6
- # DB.extension :sqls
7
- # DB[:table]
8
- # DB.sqls # => ["SELECT * FROM table LIMIT 1"]
9
- #
10
- # Related module: Sequel::Sqls
11
-
12
- module Sequel
13
- module Sqls
14
- attr_reader :sqls
15
-
16
- # Record SQL statements when logging query.
17
- def log_connection_yield(sql, conn, args=nil)
18
- @sqls_mutex.synchronize{sqls.push(sql)}
19
- super
20
- end
21
-
22
- def self.extended(db)
23
- db.instance_exec do
24
- @sqls_mutex ||= Mutex.new
25
- @sqls ||= []
26
- end
27
- end
28
- end
29
-
30
- Database.register_extension(:sqls, Sqls)
31
- end