sql_query 0.7.2 → 0.7.3

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
  SHA1:
3
- metadata.gz: 7fc8c71815dfde7bb2eb7503a4ad55f1d6548d26
4
- data.tar.gz: a2d86bca200575c2d2aab1bdda0d9931cf88d3f3
3
+ metadata.gz: a8726a8dd720904305975d654dca7d89e6f15c5c
4
+ data.tar.gz: 7a9756044cde8b2658ba19e1246f62cbae1bdf2c
5
5
  SHA512:
6
- metadata.gz: ca878c3e51f086d361c19d166d38b600627ee2291434d59278996878b10d1b0298dcfe4fc9de4432353acff1dadd710d120f2b6e0cbb8b9f9ba50573487ff62e
7
- data.tar.gz: a2aebedede6e9bf180002202e07b0e9b431486ca916876e0c8d9427c3c8aa5801277e953085fd3987c5a40ea14a775a7089c7824b6d90353a3c171b0aa982865
6
+ metadata.gz: 19a3717cfaf7c5465a7c8c5ed289cfbcfe55bba972951a58a82665b38382a75009a1af08486de8b1a748e9240afa1679e31814f25d21116c8ee422872e0a4551
7
+ data.tar.gz: 3b9e8c25f91d635e3225c47c5f36f1718879519791ce017ea620cfec1bd204e633104dda4fb6a361a00b191d841c44e4227e347dfa73ed3cada1ce30d760ce7a
data/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SqlQuery change log
2
2
 
3
- ## 0.7.3 / Unreleased
3
+ ## 0.7.4 / Unreleased
4
4
 
5
5
  * [Added]
6
6
 
@@ -10,9 +10,14 @@
10
10
 
11
11
  * [Fixed]
12
12
 
13
+ ## 0.7.3 / 2023-02-04
14
+
15
+ * [Fixed] when sql parameter had multiple whitespaces than prepared_for_logs was changing them
16
+ to single space. https://github.com/sufleR/sql_query/pull/17
17
+
13
18
  ## 0.7.2 / 2022-01-23
14
19
 
15
- * [Added] rails 6.1 as supported version https://github.com/sufleR/sql_query/pull/10
20
+ * [Added] rails 7.0 as supported version https://github.com/sufleR/sql_query/pull/12
16
21
 
17
22
  ## 0.7.1 / 2021-12-14
18
23
 
data/lib/sql_query.rb CHANGED
@@ -46,7 +46,11 @@ class SqlQuery
46
46
  end
47
47
 
48
48
  def prepared_for_logs
49
- sql.gsub(/(\n|\s)+/, ' ')
49
+ sql
50
+ .split("'")
51
+ .each_with_index
52
+ .map { |s, index| index % 2 == 0 ? s.gsub(/(\n|\s)+/, ' ') : s }
53
+ .join("'")
50
54
  end
51
55
 
52
56
  def partial(partial_name, partial_options = {})
@@ -3,7 +3,7 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe SqlQuery do
6
- let(:options) { { email: 'e@mail.dev' } }
6
+ let(:options) { { email: "e@mail.dev ' " } }
7
7
  let(:file_name) { :get_player_by_email }
8
8
  let(:query) { described_class.new(file_name, options) }
9
9
 
@@ -13,7 +13,7 @@ describe SqlQuery do
13
13
 
14
14
  describe '#initialize' do
15
15
  it 'sets instance variables for all options' do
16
- expect(query.instance_variable_get(:@email)).to eq 'e@mail.dev'
16
+ expect(query.instance_variable_get(:@email)).to eq options[:email]
17
17
  end
18
18
 
19
19
  context 'when options are set not in parentheses' do
@@ -82,7 +82,7 @@ describe SqlQuery do
82
82
  describe '#sql' do
83
83
  it 'returns query string' do
84
84
  expect(query.sql)
85
- .to eq("SELECT *\nFROM players\nWHERE email = 'e@mail.dev'\n")
85
+ .to eq("SELECT *\nFROM players\nWHERE email = 'e@mail.dev '' '\n")
86
86
  end
87
87
 
88
88
  context 'when file is .erb.sql' do
@@ -98,7 +98,7 @@ describe SqlQuery do
98
98
  describe '#pretty_sql' do
99
99
  it 'returns query string' do
100
100
  expect(query.pretty_sql)
101
- .to eq("SELECT *\nFROM players\nWHERE email = 'e@mail.dev'\n")
101
+ .to eq("SELECT *\nFROM players\nWHERE email = 'e@mail.dev '' '\n")
102
102
  end
103
103
  end
104
104
 
@@ -107,7 +107,7 @@ describe SqlQuery do
107
107
  it 'returns explain string' do
108
108
  expect(explain).to include 'EXPLAIN for:'
109
109
  expect(explain).to include 'FROM players'
110
- expect(explain).to include "WHERE email = 'e@mail.dev'"
110
+ expect(explain).to include "WHERE email = 'e@mail.dev '' '"
111
111
  expect(explain).to include 'QUERY PLAN'
112
112
  expect(explain).to include 'Seq Scan on players'
113
113
  end
@@ -116,7 +116,7 @@ describe SqlQuery do
116
116
  describe '#execute' do
117
117
  before do
118
118
  ActiveRecord::Base.connection.execute(
119
- "INSERT INTO players (email) VALUES ('e@mail.dev')"
119
+ "INSERT INTO players (email) VALUES ('e@mail.dev '' ')"
120
120
  )
121
121
  end
122
122
 
@@ -127,7 +127,7 @@ describe SqlQuery do
127
127
  end
128
128
 
129
129
  it 'returns data from database' do
130
- expect(query.execute).to eq [{ 'email' => 'e@mail.dev' }]
130
+ expect(query.execute).to eq [{ 'email' => "e@mail.dev ' " }]
131
131
  end
132
132
 
133
133
  context 'when prepare argument is true' do
@@ -148,7 +148,7 @@ describe SqlQuery do
148
148
  describe '#exec_query' do
149
149
  before do
150
150
  ActiveRecord::Base.connection.execute(
151
- "INSERT INTO players (email) VALUES ('e@mail.dev')"
151
+ "INSERT INTO players (email) VALUES ('e@mail.dev '' ')"
152
152
  )
153
153
  end
154
154
 
@@ -159,7 +159,7 @@ describe SqlQuery do
159
159
  end
160
160
 
161
161
  it 'returns data from database' do
162
- expect(query.exec_query).to eq [{ 'email' => 'e@mail.dev' }]
162
+ expect(query.exec_query).to eq [{ 'email' => "e@mail.dev ' " }]
163
163
  end
164
164
 
165
165
  context 'when prepare argument is true' do
@@ -181,7 +181,7 @@ describe SqlQuery do
181
181
  let(:file_name) { :get_player_by_email_with_template }
182
182
  it 'resolves partials as parts of sql queries' do
183
183
  expect(query.sql)
184
- .to eq("SELECT *\nFROM players\nWHERE players.email = 'e@mail.dev'\n\n")
184
+ .to eq("SELECT *\nFROM players\nWHERE players.email = 'e@mail.dev '' '\n\n")
185
185
  end
186
186
 
187
187
  context 'when partial name is string with file path' do
@@ -197,9 +197,20 @@ describe SqlQuery do
197
197
  end
198
198
 
199
199
  describe '#prepared_for_logs' do
200
+ let(:options) { { email: 'e@mail.dev ' } }
201
+
200
202
  it 'returns string without new lines' do
201
203
  expect(query.prepared_for_logs)
202
- .to eq("SELECT * FROM players WHERE email = 'e@mail.dev' ")
204
+ .to eq("SELECT * FROM players WHERE email = 'e@mail.dev ' ")
205
+ end
206
+
207
+ context 'when qote is inside parameter' do
208
+ let(:options) { { email: "e@mail.dev ' " } }
209
+
210
+ it 'returns string without new lines and changed parameter' do
211
+ expect(query.prepared_for_logs)
212
+ .to eq("SELECT * FROM players WHERE email = 'e@mail.dev '' ' ")
213
+ end
203
214
  end
204
215
  end
205
216
 
data/sql_query.gemspec CHANGED
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'sql_query'
8
- spec.version = '0.7.2'
8
+ spec.version = '0.7.3'
9
9
  spec.authors = ['sufleR']
10
10
  spec.email = ['szymon.fracczak@gmail.com']
11
11
  spec.summary = 'Ruby gem to load and execute SQL queries from `.sql.erb` templates'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sql_query
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - sufleR
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-23 00:00:00.000000000 Z
11
+ date: 2023-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord