uc3-dmp-rds 0.0.7 → 0.0.8

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: 9364f66606e9e1778f3c0168139c989b14620af4f1a901a749ddb5efaede07f3
4
- data.tar.gz: 27e912c3644030d29c410b3fd6bcb6a8ec4b8723925c07c0771bfc6297ed46f2
3
+ metadata.gz: 1ceba0e24d5a6a925fde46a68d7d8f1586aa29bf1687e94000d989f6ab522e3e
4
+ data.tar.gz: 0d6ef838acd8ce79e5638e83b45c8bbdb72cd919863916ad0d48d5658ab079b8
5
5
  SHA512:
6
- metadata.gz: 37d01cf1cd4e06757543641aa5a004abb696ec47d4560d1fea957500990338faa279ac525930421efb6fbc3bf7b09bf745e0550e76bccc673544646c52a07825
7
- data.tar.gz: 7815071cda74253caebc6ca8c82b37fc1d94d2b27ec4709a12c7a8996aec81b694e2eba356929562499ec49bd32556173e09220546c930ffb18eabc7a39f5f08
6
+ metadata.gz: 7aa9e392a307c55483d432c487ef5a5c0ab6c501e7e3081646f5945ba7fe5322fd29b2eb1d3b81d110f94db0ec252f624fcdcf70a4f903df0cdc434e2851b99b
7
+ data.tar.gz: 2ced3df663f4dc6ee3d360625ff12c3a267c9a136c1d9535a54a41d51092691a7e8e316ec39fb8eca207b98807abc623f0a47bcaacbca3dd6c55275997211fba
@@ -6,58 +6,60 @@ require 'aws-sdk-sns'
6
6
  require 'aws-sdk-ssm'
7
7
  require 'mysql2'
8
8
 
9
- require 'uc3-dmp-api-core'
10
-
11
9
  module Uc3DmpRds
10
+ # Error from the Rds Adapter
11
+ class AdapterError < StandardError; end
12
+
12
13
  # A module to interact with the RDS DB. Expects the following ENV variables to be set:
13
14
  # DATABASE_HOST: The host URL
14
15
  # DATABASE_PORT: The port to use
15
16
  # DATABASE_NAME: The name of the database
16
17
  #
17
- # and the following from the AWS SSM parameter store:
18
+ # and the following should be passed into the :connect method:
18
19
  # RDS_USERNAME: The RDS username
19
20
  # RDS_PASSWORD: The RDS password
20
21
  #
21
22
  class Adapter
22
- MSG_NO_CONNECTION = 'No current database connection. Call Uc3DmpRds.connect first.'
23
- MSG_KEYWORDS_INVALID = 'The parameters specified do not match those in the SQL query.'
23
+ MSG_KEYWORDS_INVALID = 'The parameters specified do not match those in the SQL query'
24
+ MSG_MISSING_CREDENTIALS = 'No username and/or password specified'
25
+ MSG_NO_CONNECTION = 'No current database connection. Call Uc3DmpRds.connect first'
24
26
 
25
27
  class << self
26
28
  # Connect to the RDS instance
27
- def connect(debug: false)
28
- creds = _credentials
29
- ActiveRecord::Base.establish_connection(
29
+ def connect(username:, password:)
30
+ raise AdapterError, MSG_MISSING_CREDENTIALS if username.nil? || username.to_s.strip.empty? ||
31
+ password.nil? || password.to_s.strip.empty?
32
+
33
+ puts "CONNECT - host: #{ENV['DATABASE_HOST']}, port: #{ENV['DATABASE_PORT']}, name: #{ENV['DATABASE_NAME']}, username: #{username}, password.lenght: #{password.length}"
34
+
35
+ connection = ActiveRecord::Base.establish_connection(
30
36
  adapter: 'mysql2',
31
37
  host: ENV.fetch('DATABASE_HOST', nil),
32
38
  port: ENV.fetch('DATABASE_PORT', nil),
33
39
  database: ENV.fetch('DATABASE_NAME', nil),
34
- username: creds[:username],
35
- password: creds[:password],
40
+ username: username,
41
+ password: password,
36
42
  encoding: 'utf8mb4'
37
43
  )
44
+
45
+ puts connection.inspect
46
+ puts "CONNECTED? #{ActiveRecord::Base.connected?}"
47
+
38
48
  ActiveRecord::Base.connected?
39
49
  end
40
50
 
41
51
  # Execute the specified query using ActiveRecord's helpers to sanitize the input
42
52
  def execute_query(sql:, **params)
43
- raise StandardError, MSG_NO_CONNECTION unless ActiveRecord::Base.connected?
53
+ raise AdapterError, MSG_NO_CONNECTION unless ActiveRecord::Base.connected?
44
54
  return [] unless sql.is_a?(String) && !sql.strip.empty? && (params.nil? || params.is_a?(Hash))
45
55
  # Verify that all of the kewords are accounted for and that values were supplied
46
- raise StandardError, MSG_KEYWORDS_INVALID unless _verify_params(sql: sql, params: params)
56
+ raise AdapterError, MSG_KEYWORDS_INVALID unless _verify_params(sql: sql, params: params)
47
57
 
48
58
  ActiveRecord::Base.simple_execute(sql, params)
49
59
  end
50
60
 
51
61
  private
52
62
 
53
- # Fetch the DB credentials from SSM parameter store
54
- def _credentials
55
- {
56
- username: Uc3DmpApiCore::SsmReader.get_ssm_value(key: :rds_username),
57
- password: Uc3DmpApiCore::SsmReader.get_ssm_value(key: :rds_password)
58
- }
59
- end
60
-
61
63
  # Verify that all params defined in the SQL exist in the params hash and vice versa
62
64
  # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
63
65
  def _verify_params(sql:, params:)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uc3DmpRds
4
- VERSION = '0.0.7'
4
+ VERSION = '0.0.8'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uc3-dmp-rds
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Riley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-02 00:00:00.000000000 Z
11
+ date: 2023-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_record_simple_execute
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.5.5
83
- - !ruby/object:Gem::Dependency
84
- name: uc3-dmp-api-core
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 0.0.6
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 0.0.6
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: byebug
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +122,20 @@ dependencies:
136
122
  - - '='
137
123
  - !ruby/object:Gem::Version
138
124
  version: 1.50.2
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-performance
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: 1.17.1
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
137
+ - !ruby/object:Gem::Version
138
+ version: 1.17.1
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rubocop-rspec
141
141
  requirement: !ruby/object:Gem::Requirement