uc3-dmp-rds 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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