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.
- checksums.yaml +4 -4
- data/.beads/.gitignore +54 -0
- data/.beads/.jsonl.lock +0 -0
- data/.beads/.migration-hint-ts +1 -0
- data/.beads/README.md +81 -0
- data/.beads/config.yaml +42 -0
- data/.beads/issues.jsonl +20 -0
- data/.beads/metadata.json +7 -0
- data/.coderabbit.yaml +94 -0
- data/.devcontainer/.p10k.zsh +1713 -0
- data/.devcontainer/.zshrc +29 -0
- data/.devcontainer/Dockerfile +137 -0
- data/.devcontainer/copy-claude-credentials.sh +32 -0
- data/.devcontainer/devcontainer.json +102 -0
- data/.devcontainer/init-firewall.sh +123 -0
- data/.devcontainer/setup-credentials.sh +95 -0
- data/.github/dependabot.yml +18 -0
- data/.github/workflows/dependabot-auto-merge.yml +36 -0
- data/.github/workflows/test.yml +44 -9
- data/.gitignore +6 -1
- data/.overcommit.yml +73 -0
- data/.rubocop.yml +167 -0
- data/AGENTS.md +126 -0
- data/CHANGELOG.md +41 -0
- data/CLAUDE.md +230 -0
- data/Gemfile +6 -2
- data/Gemfile.lock +189 -0
- data/Guardfile +1 -1
- data/Rakefile +28 -3
- data/config/platforms/base.csv +5 -0
- data/config/platforms/rdbms/athena.csv +4 -0
- data/config/platforms/rdbms/postgres.csv +3 -0
- data/config/platforms/rdbms/snowflake.csv +1 -0
- data/config/platforms/rdbms/spark.csv +3 -0
- data/lib/sequel/extensions/cold_col.rb +436 -0
- data/lib/sequel/extensions/db_opts.rb +65 -4
- data/lib/sequel/extensions/funky.rb +136 -0
- data/lib/sequel/extensions/make_readyable.rb +146 -30
- data/lib/sequel/extensions/more_sql.rb +76 -0
- data/lib/sequel/extensions/platform.rb +301 -0
- data/lib/sequel/extensions/settable.rb +64 -0
- data/lib/sequel/extensions/sql_recorder.rb +85 -0
- data/lib/sequel/extensions/unionize.rb +169 -0
- data/lib/sequel/extensions/usable.rb +30 -1
- data/lib/sequelizer/cli.rb +61 -18
- data/lib/sequelizer/connection_maker.rb +54 -72
- data/lib/sequelizer/env_config.rb +6 -6
- data/lib/sequelizer/gemfile_modifier.rb +23 -21
- data/lib/sequelizer/monkey_patches/database_in_after_connect.rb +7 -5
- data/lib/sequelizer/options.rb +102 -19
- data/lib/sequelizer/options_hash.rb +2 -0
- data/lib/sequelizer/version.rb +3 -1
- data/lib/sequelizer/yaml_config.rb +9 -4
- data/lib/sequelizer.rb +65 -9
- data/sequelizer.gemspec +20 -12
- data/test/lib/sequel/extensions/test_cold_col.rb +251 -0
- data/test/lib/sequel/extensions/test_db_opts.rb +10 -8
- data/test/lib/sequel/extensions/test_make_readyable.rb +198 -28
- data/test/lib/sequel/extensions/test_more_sql.rb +132 -0
- data/test/lib/sequel/extensions/test_platform.rb +222 -0
- data/test/lib/sequel/extensions/test_settable.rb +109 -0
- data/test/lib/sequel/extensions/test_sql_recorder.rb +231 -0
- data/test/lib/sequel/extensions/test_unionize.rb +76 -0
- data/test/lib/sequel/extensions/test_usable.rb +5 -2
- data/test/lib/sequelizer/test_connection_maker.rb +21 -17
- data/test/lib/sequelizer/test_env_config.rb +5 -2
- data/test/lib/sequelizer/test_gemfile_modifier.rb +7 -6
- data/test/lib/sequelizer/test_options.rb +42 -9
- data/test/lib/sequelizer/test_yaml_config.rb +13 -12
- data/test/test_helper.rb +37 -8
- metadata +196 -39
- 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',
|
|
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:
|
|
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 =
|
|
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([
|
|
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(
|
|
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
|
-
|
|
75
|
-
|
|
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)
|
|
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
|
-
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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,
|
|
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
|
|
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
|
-
|
|
14
|
-
|
|
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.
|
|
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:
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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.
|
|
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: '
|
|
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: '
|
|
109
|
+
version: '13.3'
|
|
83
110
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
111
|
+
name: rubocop
|
|
85
112
|
requirement: !ruby/object:Gem::Requirement
|
|
86
113
|
requirements:
|
|
87
114
|
- - "~>"
|
|
88
115
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
90
|
-
type: :
|
|
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: '
|
|
123
|
+
version: '1.0'
|
|
97
124
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
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:
|
|
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
|
|
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
|
|
225
|
+
version: '0.1'
|
|
125
226
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
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: '
|
|
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: '
|
|
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/
|
|
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
|
-
|
|
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:
|
|
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.
|
|
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
|