activerecord-dsql-adapter 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7d5653142d403dfb1efc8e710f3f2e9cc72264bfdce1f0a21e0fb7f8d4ee316f
4
+ data.tar.gz: f66eb457cedb77489ec8c761e022af67f9d68cac59cf6eb4db7c12851868592e
5
+ SHA512:
6
+ metadata.gz: 56ebe63d14994b848c165eb8a95844d51c182eca011578694a183883e36f3c6ef9ee75f5c8a982d056144baf5ab4264e016ed64d52dcee16b0654fa7022cc16e
7
+ data.tar.gz: 1a81f168feff53852f0cc6c192e744f70dca091155ebdef87a92901104940d58a8568150560562998675dc745a62178d11eec513e6cb7aa48846dbbd015b935c
checksums.yaml.gz.sig ADDED
Binary file
data/README.md ADDED
@@ -0,0 +1,46 @@
1
+ # Active Record Adapter for AWS Aurora DSQL
2
+
3
+ The very beginnings of an Active Record connection adapter for Amazon's AWS Aurora DSQL database.
4
+
5
+ https://docs.aws.amazon.com/aurora-dsql/latest/userguide/
6
+
7
+ ## Installation
8
+
9
+ ```
10
+ bundle add activerecord-dsql-adapter
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```
16
+ # config/database.yml
17
+ development:
18
+ adapter: dsql
19
+ host: abc123.dsql.us-east-1.on.aws
20
+ ```
21
+
22
+ Credentials available in ENV or inside your `~/.aws/config` file will be used to generate an appropriate AWS signature as a password:
23
+
24
+ https://docs.aws.amazon.com/aurora-dsql/latest/userguide/authentication-token-ruby.html
25
+
26
+ ```
27
+ $ rails console
28
+ Loading development environment (Rails 7.2.2)
29
+
30
+ dsql-example(dev)> ActiveRecord::Base.connection.raw_connection
31
+ #<PG::Connection:0x000000011dab5860 host=abc123.dsql.us-east-1.on.aws port=5432 user=admin>
32
+
33
+ dsql-example(dev)> ActiveRecord::Base.connection.execute("SELECT 1")
34
+ (1844.8ms) SELECT 1
35
+ => #<PG::Result:0x00000001238b39a8 status=PGRES_TUPLES_OK ntuples=1 nfields=1 cmd_tuples=1>
36
+ ```
37
+
38
+ ## Development
39
+
40
+ After checking out the repo, run `script/setup` to install dependencies. You can also run `script/console` for an interactive prompt that will allow you to experiment.
41
+
42
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
43
+
44
+ ## Contributing
45
+
46
+ Bug reports and pull requests are welcome on GitHub at https://github.com/sj26/activerecord-dsql-adapter.
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "aws-sdk-dsql"
4
+
5
+ require "active_record"
6
+ require "active_record/connection_adapters/postgresql_adapter"
7
+
8
+ module ActiveRecord
9
+ module ConnectionAdapters
10
+ class DSQLAdapter < PostgreSQLAdapter
11
+ ADAPTER_NAME = "DSQL"
12
+
13
+ class << self
14
+ def new_client(conn_params)
15
+ conn_params[:sslmode] ||= "require"
16
+ conn_params[:user] ||= "admin"
17
+ conn_params[:dbname] ||= "postgres"
18
+
19
+ conn_params[:password] ||= generate_password(conn_params)
20
+
21
+ super(conn_params)
22
+ end
23
+
24
+ private
25
+
26
+ def generate_password(conn_params)
27
+ endpoint = conn_params.fetch(:host)
28
+ region = ENV["AWS_REGION"] || ENV["AWS_DEFAULT_REGION"] || "us-east-1"
29
+
30
+ credentials = Aws::CredentialProviderChain.new.resolve
31
+
32
+ token_generator = Aws::DSQL::AuthTokenGenerator.new(credentials: credentials)
33
+
34
+ token_generator.generate_db_connect_admin_auth_token(endpoint: endpoint, region: region)
35
+ end
36
+ end
37
+
38
+ def configure_connection
39
+ # PostgreSQLAdapter sets a bunch of parameters here which DSQL doesn't support
40
+ end
41
+
42
+ # https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-postgresql-compatibility-unsupported-features.html
43
+
44
+ def supports_views?
45
+ false
46
+ end
47
+
48
+ def supports_materialized_views?
49
+ false
50
+ end
51
+
52
+ def supports_extensions?
53
+ false
54
+ end
55
+
56
+ def supports_index_sort_order?
57
+ false
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_record"
4
+ require "active_record/connection_adapters"
5
+
6
+ ActiveRecord::ConnectionAdapters.register("dsql", "ActiveRecord::ConnectionAdapters::DSQLAdapter", "active_record/connection_adapters/dsql_adapter")
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,110 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: activerecord-dsql-adapter
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Samuel Cochran
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDKDCCAhCgAwIBAgIBAzANBgkqhkiG9w0BAQsFADA6MQ0wCwYDVQQDDARzajI2
14
+ MRQwEgYKCZImiZPyLGQBGRYEc2oyNjETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0y
15
+ NDA3MjIwNjA3MjdaFw0yNTA3MjIwNjA3MjdaMDoxDTALBgNVBAMMBHNqMjYxFDAS
16
+ BgoJkiaJk/IsZAEZFgRzajI2MRMwEQYKCZImiZPyLGQBGRYDY29tMIIBIjANBgkq
17
+ hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr60Eo/ttCk8GMTMFiPr3GoYMIMFvLak
18
+ xSmTk9YGCB6UiEePB4THSSA5w6IPyeaCF/nWkDp3/BAam0eZMWG1IzYQB23TqIM0
19
+ 1xzcNRvFsn0aQoQ00k+sj+G83j3T5OOV5OZIlu8xAChMkQmiPd1NXc6uFv+Iacz7
20
+ kj+CMsI9YUFdNoU09QY0b+u+Rb6wDYdpyvN60YC30h0h1MeYbvYZJx/iZK4XY5zu
21
+ 4O/FL2ChjL2CPCpLZW55ShYyrzphWJwLOJe+FJ/ZBl6YXwrzQM9HKnt4titSNvyU
22
+ KzE3L63A3PZvExzLrN9u09kuWLLJfXB2sGOlw3n9t72rJiuBr3/OQQIDAQABozkw
23
+ NzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU99dfRjEKFyczTeIz
24
+ m3ZsDWrNC80wDQYJKoZIhvcNAQELBQADggEBAKcQ+MfpXXDmqboG36O8mXhJZJ8+
25
+ zlUqM1QnoEG8XpH/29py4GzSgs6Sb+v/Z1SEArRDq0r1bKZuWiWxqEDnmSE94+pe
26
+ A0Ct6Pv/paEhQCoPkGQNa74cH4tzkVHIA7WSwRL8wOz5vo++YBKH5H36nNqtLV7s
27
+ kNJYsbeOL/w2icQ4b0w4KYgcs4bd6yrYdgcgsRd2sCYb2XFHjczYqw4iEwuUenNM
28
+ G8WXc9zUMVewWkEjS9s++xFNb/7f4dFNXCoE3pgHjzctt7gYcJVacprsg925LYHO
29
+ WsbnbEow7BPlYOZm3rDIsEYpWqxN0lR8BakO2ToJ5RAHXahFu4K4eJtAsLk=
30
+ -----END CERTIFICATE-----
31
+ date: 2024-12-04 00:00:00.000000000 Z
32
+ dependencies:
33
+ - !ruby/object:Gem::Dependency
34
+ name: activerecord
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 7.2.0
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 7.2.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: pg
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.1'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.1'
61
+ - !ruby/object:Gem::Dependency
62
+ name: aws-sdk-dsql
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ description:
76
+ email:
77
+ - sj26@sj26.com
78
+ executables: []
79
+ extensions: []
80
+ extra_rdoc_files: []
81
+ files:
82
+ - README.md
83
+ - lib/active_record/connection_adapters/dsql_adapter.rb
84
+ - lib/activerecord-dsql-adapter.rb
85
+ homepage: https://github.com/sj26/activerecord-dsql-adapter
86
+ licenses: []
87
+ metadata:
88
+ homepage_uri: https://github.com/sj26/activerecord-dsql-adapter
89
+ source_code_uri: https://github.com/sj26/activerecord-dsql-adapter
90
+ changelog_uri: https://github.com/sj26/activerecord-dsql-adapter/releases
91
+ post_install_message:
92
+ rdoc_options: []
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 3.0.0
100
+ required_rubygems_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ requirements: []
106
+ rubygems_version: 3.5.16
107
+ signing_key:
108
+ specification_version: 4
109
+ summary: ActiveRecord adapter for AWS Aurora DSQL (PostgreSQL)
110
+ test_files: []
metadata.gz.sig ADDED
Binary file