activerecord-dsql-adapter 0.1.4 → 0.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2a6400458dc398fea1b2033dd3fe8c8e488808c71f459dfe693cc905b8ceebc
4
- data.tar.gz: 50eceb300ff89ca6f93aff37165794a32760a3d242f84be60779d0a8a00d3302
3
+ metadata.gz: bba333873c829af25ffcf9a57c9eac82af22672f9b23b8ad0e868b9f207da5ae
4
+ data.tar.gz: 2c958e61542f81683de0dc04bae5e0b8dde6002aa2128e8f4c1e4933063f27be
5
5
  SHA512:
6
- metadata.gz: abcb7ee0f219fbf922ee539b03becb54bdcdb600a0685bde8415c0886319296c90ea8c15d5ee0ccd8428f162c1d1b2bb597d42e4c1e751ab14f8bfd8e91d8987
7
- data.tar.gz: 664df396b1edb20293c1a22bec8647a321f0f4224e8e6e352ed78b51568774fee07dcee443b48691d6ce25cf4eef6f694066792db34b8e50b0867ab9cd7c2d91
6
+ metadata.gz: 47cbd5b86957b9bc556ac3929ea2393d76363ffd0fa8ac7df96c9b8bbb2794ec5caf6c7d01c5d103b6440b2d1326fd7b37c648a7c765a4d40d5c3b4d9a3db3a6
7
+ data.tar.gz: 1038d78431011751fca28ecf41a9982061a1749833fe61efe8f1005d01cd09446faf8773d337cbb92bd7112bbf6d35e2d116ec5e03492c392859b609ef698553
checksums.yaml.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -35,6 +35,81 @@ dsql-example(dev)> ActiveRecord::Base.connection.execute("SELECT 1")
35
35
  => #<PG::Result:0x00000001238b39a8 status=PGRES_TUPLES_OK ntuples=1 nfields=1 cmd_tuples=1>
36
36
  ```
37
37
 
38
+ ```
39
+ rails dbconsole -p
40
+ psql (14.13 (Homebrew), server 16.5)
41
+ SSL connection (protocol: TLSv1.3, cipher: TLS_AES_128_GCM_SHA256, bits: 128, compression: off)
42
+ Type "help" for help.
43
+
44
+ [postgres] >
45
+ ```
46
+
47
+ ```
48
+ $ rails generate scaffold create_posts title:string body:text
49
+ invoke active_record
50
+ create db/migrate/20241204112954_create_posts.rb
51
+ create app/models/post.rb
52
+ invoke resource_route
53
+ route resources :posts
54
+ invoke scaffold_controller
55
+ create app/controllers/posts_controller.rb
56
+ invoke erb
57
+ create app/views/posts
58
+ create app/views/posts/index.html.erb
59
+ create app/views/posts/edit.html.erb
60
+ create app/views/posts/show.html.erb
61
+ create app/views/posts/new.html.erb
62
+ create app/views/posts/_form.html.erb
63
+ create app/views/posts/_post.html.erb
64
+ invoke resource_route
65
+ invoke helper
66
+ create app/helpers/posts_helper.rb
67
+
68
+ $ rails db:migrate
69
+ == 20241204112954 CreatePosts: migrating ======================================
70
+ -- create_table(:posts)
71
+ -> 0.3887s
72
+ == 20241204112954 CreatePosts: migrated (0.3889s) =============================
73
+
74
+ $ rails console
75
+ Loading development environment (Rails 7.2.2)
76
+
77
+ pry(main)> post = Post.create!(title: "Hello, world!")
78
+ TRANSACTION (218.9ms) BEGIN
79
+ Post Create (530.9ms) INSERT INTO "posts" ("title", "body", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["title", "Hello, world!"], ["body", nil], ["created_at", "2024-12-04 11:37:41.238422"], ["updated_at", "2024-12-04 11:37:41.238422"]]
80
+ TRANSACTION (276.7ms) COMMIT
81
+ => #<Post:0x00000001267f30d8 id: "5b642ccc-c5e1-4d7c-828b-70fc107bf6e9", title: "Hello, world!", body: nil, created_at: "2024-12-04 11:37:41.238422000 +0000", updated_at: "2024-12-04 11:37:41.238422000 +0000">
82
+
83
+ pry(main)> post.update!(body: "Should probably write something...")
84
+ TRANSACTION (221.5ms) BEGIN
85
+ Post Update (503.8ms) UPDATE "posts" SET "body" = $1, "updated_at" = $2 WHERE "posts"."id" = $3 [["body", "Should probably write something..."], ["updated_at", "2024-12-04 11:37:54.659673"], ["id", "5b642ccc-c5e1-4d7c-828b-70fc107bf6e9"]]
86
+ TRANSACTION (258.7ms) COMMIT
87
+ => true
88
+
89
+ pry(main)> post.destroy!
90
+ TRANSACTION (217.6ms) BEGIN
91
+ Post Destroy (439.5ms) DELETE FROM "posts" WHERE "posts"."id" = $1 [["id", "5b642ccc-c5e1-4d7c-828b-70fc107bf6e9"]]
92
+ TRANSACTION (230.3ms) COMMIT
93
+ => #<Post:0x00000001267f30d8 id: "5b642ccc-c5e1-4d7c-828b-70fc107bf6e9", title: "Hello, world!", body: "Should probably write something...", created_at: "2024-12-04 11:37:41.238422000 +0000", updated_at: "2024-12-04 11:37:54.659673000 +0000">
94
+ ```
95
+
96
+ ```ruby
97
+ # db/schema.rb
98
+
99
+ ActiveRecord::Schema[7.2].define(version: 2024_12_04_112954) do
100
+ create_table "posts", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
101
+ t.string "title"
102
+ t.text "body"
103
+ t.datetime "created_at", null: false
104
+ t.datetime "updated_at", null: false
105
+
106
+ t.unique_constraint ["id"], name: "posts_id_key"
107
+ end
108
+ end
109
+ ```
110
+
111
+ DSQL does not support `CREATE DATABASE` so `db:create` and `db:drop` do not work. But `db:prepare` can load the schema for you.
112
+
38
113
  ## Development
39
114
 
40
115
  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.
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveRecord
4
+ module ConnectionAdapters
5
+ module DSQL
6
+ module SchemaStatements
7
+ def add_index_options(table_name, column_name, **options) # :nodoc:
8
+ options[:algorithm] = :async
9
+ super
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -10,6 +10,8 @@ module ActiveRecord
10
10
  class DSQLAdapter < PostgreSQLAdapter
11
11
  ADAPTER_NAME = "DSQL"
12
12
 
13
+ include ActiveRecord::ConnectionAdapters::DSQL::SchemaStatements
14
+
13
15
  class << self
14
16
  def new_client(conn_params)
15
17
  conn_params[:sslmode] ||= "require"
@@ -119,6 +121,10 @@ module ActiveRecord
119
121
  false
120
122
  end
121
123
 
124
+ def index_algorithms
125
+ { async: "ASYNC" }
126
+ end
127
+
122
128
  # Ignore DSQL sys schema.
123
129
  #
124
130
  # https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-systems-tables.html
@@ -12,6 +12,7 @@ module ActiveRecord
12
12
  extend ActiveSupport::Autoload
13
13
 
14
14
  autoload :SchemaDumper
15
+ autoload :SchemaStatements
15
16
  end
16
17
  end
17
18
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,18 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-dsql-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Cochran
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain:
11
10
  - |
12
11
  -----BEGIN CERTIFICATE-----
13
- MIIDKDCCAhCgAwIBAgIBAzANBgkqhkiG9w0BAQsFADA6MQ0wCwYDVQQDDARzajI2
12
+ MIIDKDCCAhCgAwIBAgIBBDANBgkqhkiG9w0BAQsFADA6MQ0wCwYDVQQDDARzajI2
14
13
  MRQwEgYKCZImiZPyLGQBGRYEc2oyNjETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0y
15
- NDA3MjIwNjA3MjdaFw0yNTA3MjIwNjA3MjdaMDoxDTALBgNVBAMMBHNqMjYxFDAS
14
+ NTA5MDEwNTU2MDhaFw0yNjA5MDEwNTU2MDhaMDoxDTALBgNVBAMMBHNqMjYxFDAS
16
15
  BgoJkiaJk/IsZAEZFgRzajI2MRMwEQYKCZImiZPyLGQBGRYDY29tMIIBIjANBgkq
17
16
  hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr60Eo/ttCk8GMTMFiPr3GoYMIMFvLak
18
17
  xSmTk9YGCB6UiEePB4THSSA5w6IPyeaCF/nWkDp3/BAam0eZMWG1IzYQB23TqIM0
@@ -21,29 +20,35 @@ cert_chain:
21
20
  4O/FL2ChjL2CPCpLZW55ShYyrzphWJwLOJe+FJ/ZBl6YXwrzQM9HKnt4titSNvyU
22
21
  KzE3L63A3PZvExzLrN9u09kuWLLJfXB2sGOlw3n9t72rJiuBr3/OQQIDAQABozkw
23
22
  NzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU99dfRjEKFyczTeIz
24
- m3ZsDWrNC80wDQYJKoZIhvcNAQELBQADggEBAKcQ+MfpXXDmqboG36O8mXhJZJ8+
25
- zlUqM1QnoEG8XpH/29py4GzSgs6Sb+v/Z1SEArRDq0r1bKZuWiWxqEDnmSE94+pe
26
- A0Ct6Pv/paEhQCoPkGQNa74cH4tzkVHIA7WSwRL8wOz5vo++YBKH5H36nNqtLV7s
27
- kNJYsbeOL/w2icQ4b0w4KYgcs4bd6yrYdgcgsRd2sCYb2XFHjczYqw4iEwuUenNM
28
- G8WXc9zUMVewWkEjS9s++xFNb/7f4dFNXCoE3pgHjzctt7gYcJVacprsg925LYHO
29
- WsbnbEow7BPlYOZm3rDIsEYpWqxN0lR8BakO2ToJ5RAHXahFu4K4eJtAsLk=
23
+ m3ZsDWrNC80wDQYJKoZIhvcNAQELBQADggEBABLxSFRmde7YPaefFvqzjWZ7snrT
24
+ /QdsnhlLypvIUeGCuLemQKq5sO7YFJ4UUnYbzrhPScnh5odx0XuXDWLN2Xr7Sz9A
25
+ cw4c0gEWhZAv5xm9taOyw0Wuy2u7RNeAgLikufrIdr+Fei4fj0zEzdUQs6OxDZBV
26
+ ZJpG1F3YsIupbaQEFZFOMoP111ziIeddeS/+xJYB9iXxWdgBcKgPchpPjp//D1kk
27
+ rbxUJAPpJ+AnctA9Kgqa7b71x6DG8aFCTN3TUGKpQUnt5Qe6eynYnNBQ+yyo8J8r
28
+ rVaBG/8I33rEoBAyw3BuV44TS7DG1kGbv4DOByI46JFAZU4aLEr6lpAmvPs=
30
29
  -----END CERTIFICATE-----
31
- date: 2024-12-04 00:00:00.000000000 Z
30
+ date: 1980-01-02 00:00:00.000000000 Z
32
31
  dependencies:
33
32
  - !ruby/object:Gem::Dependency
34
33
  name: activerecord
35
34
  requirement: !ruby/object:Gem::Requirement
36
35
  requirements:
37
- - - "~>"
36
+ - - ">="
38
37
  - !ruby/object:Gem::Version
39
38
  version: 7.2.0
39
+ - - "<"
40
+ - !ruby/object:Gem::Version
41
+ version: '9'
40
42
  type: :runtime
41
43
  prerelease: false
42
44
  version_requirements: !ruby/object:Gem::Requirement
43
45
  requirements:
44
- - - "~>"
46
+ - - ">="
45
47
  - !ruby/object:Gem::Version
46
48
  version: 7.2.0
49
+ - - "<"
50
+ - !ruby/object:Gem::Version
51
+ version: '9'
47
52
  - !ruby/object:Gem::Dependency
48
53
  name: pg
49
54
  requirement: !ruby/object:Gem::Requirement
@@ -72,7 +77,6 @@ dependencies:
72
77
  - - ">="
73
78
  - !ruby/object:Gem::Version
74
79
  version: '0'
75
- description:
76
80
  email:
77
81
  - sj26@sj26.com
78
82
  executables: []
@@ -82,6 +86,7 @@ files:
82
86
  - README.md
83
87
  - lib/active_record/connection_adapters/dsql/railtie.rb
84
88
  - lib/active_record/connection_adapters/dsql/schema_dumper.rb
89
+ - lib/active_record/connection_adapters/dsql/schema_statements.rb
85
90
  - lib/active_record/connection_adapters/dsql_adapter.rb
86
91
  - lib/active_record/tasks/dsql_database_tasks.rb
87
92
  - lib/activerecord-dsql-adapter.rb
@@ -91,7 +96,6 @@ metadata:
91
96
  homepage_uri: https://github.com/sj26/activerecord-dsql-adapter
92
97
  source_code_uri: https://github.com/sj26/activerecord-dsql-adapter
93
98
  changelog_uri: https://github.com/sj26/activerecord-dsql-adapter/releases
94
- post_install_message:
95
99
  rdoc_options: []
96
100
  require_paths:
97
101
  - lib
@@ -106,8 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
110
  - !ruby/object:Gem::Version
107
111
  version: '0'
108
112
  requirements: []
109
- rubygems_version: 3.5.16
110
- signing_key:
113
+ rubygems_version: 3.7.2
111
114
  specification_version: 4
112
115
  summary: ActiveRecord adapter for AWS Aurora DSQL (PostgreSQL)
113
116
  test_files: []
metadata.gz.sig CHANGED
Binary file