sql_query 0.4.0 → 0.5.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 +4 -4
- data/CHANGELOG.md +5 -1
- data/README.md +12 -3
- data/lib/sql_query.rb +5 -5
- data/spec/config_spec.rb +13 -0
- data/spec/sql_query_spec.rb +30 -1
- data/sql_query.gemspec +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 578c4baee7c9f46b29390e5673a3964ea2355df5
|
4
|
+
data.tar.gz: 9a5ebd7357ab88afbe51e722450ce7be3cb50358
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7dc270655c8c0e38679b97cf60dac8923ca4f91e183d61320978594af24f252cb5c62e2daf533b85b5024c9e74a832d28b8c777106e0b65b8f241d47e381c78c
|
7
|
+
data.tar.gz: b97a98c442b2b80fbfec76193690924cefa157ef18e5144c69e19097931163b150351454648d8042402a5e4d467de024fd805a66b391416942b054b403bd3fe2
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# SqlQuery change log
|
2
2
|
|
3
|
-
## 0.
|
3
|
+
## 0.5.1 / Unreleased
|
4
4
|
|
5
5
|
* [Added]
|
6
6
|
|
@@ -10,6 +10,10 @@
|
|
10
10
|
|
11
11
|
* [Fixed]
|
12
12
|
|
13
|
+
## 0.5.0 / 2016-04-26
|
14
|
+
|
15
|
+
* [Added] possibility to overwrite default connection class and connection directly using db_connection option.
|
16
|
+
|
13
17
|
## 0.4.0 / 2016-01-20
|
14
18
|
|
15
19
|
* [Added] execute will accept boolean attribute.
|
data/README.md
CHANGED
@@ -79,9 +79,13 @@ Example:
|
|
79
79
|
SqlQuery.new('player/get_by_email', email: 'e@mail.dev')
|
80
80
|
```
|
81
81
|
|
82
|
+
#### Special options
|
83
|
+
|
84
|
+
* db_connection - If you want to change default connection to database you may do it for every query execution using this option.
|
85
|
+
|
82
86
|
### Methods
|
83
87
|
|
84
|
-
- **execute** - executes query and returns result data. It accepts boolean argument. When argument is false it will raw sql query instead of prepared_for_logs.
|
88
|
+
- **execute** - executes query and returns result data. It accepts boolean argument. When argument is false it will run raw sql query instead of prepared_for_logs.
|
85
89
|
- **explain** - runs explain for SQL from template
|
86
90
|
- **sql** - returns SQL string
|
87
91
|
- **pretty_sql** - returns SQL string prettier to read in console
|
@@ -89,14 +93,19 @@ SqlQuery.new('player/get_by_email', email: 'e@mail.dev')
|
|
89
93
|
|
90
94
|
### Configuration
|
91
95
|
|
92
|
-
If you don't like default path to your queries you can configure it in initializer.
|
93
|
-
|
94
96
|
```ruby
|
95
97
|
# config/initializers/sql_query.rb
|
96
98
|
SqlQuery.configure do |config|
|
97
99
|
config.path = '/app/sql_templates'
|
100
|
+
config.adapter = ActiveRecord::Base
|
98
101
|
end
|
99
102
|
```
|
103
|
+
|
104
|
+
#### Configuration options
|
105
|
+
* path - If you don't like default path to your queries you can change it here.
|
106
|
+
|
107
|
+
* adapter - class which implements connection method.
|
108
|
+
|
100
109
|
### Partials
|
101
110
|
|
102
111
|
You can prepare part of sql query in partial file and reuse it in multiple queries.
|
data/lib/sql_query.rb
CHANGED
@@ -9,8 +9,8 @@ class SqlQuery
|
|
9
9
|
end
|
10
10
|
@sql_filename = file_name
|
11
11
|
@options = options
|
12
|
+
@connection = options.try(:delete, :db_connection) || self.class.config.adapter.connection
|
12
13
|
prepare_variables
|
13
|
-
@connection = ActiveRecord::Base.connection
|
14
14
|
end
|
15
15
|
|
16
16
|
def explain
|
@@ -47,10 +47,8 @@ class SqlQuery
|
|
47
47
|
).sql
|
48
48
|
end
|
49
49
|
|
50
|
-
def self.config=(value)
|
51
|
-
@config = value
|
52
|
-
end
|
53
50
|
|
51
|
+
attr_writer :config
|
54
52
|
def self.config
|
55
53
|
@config ||= Config.new
|
56
54
|
end
|
@@ -60,10 +58,11 @@ class SqlQuery
|
|
60
58
|
end
|
61
59
|
|
62
60
|
class Config
|
63
|
-
attr_accessor :path
|
61
|
+
attr_accessor :path, :adapter
|
64
62
|
|
65
63
|
def initialize
|
66
64
|
@path = '/app/sql_queries'
|
65
|
+
@adapter = ActiveRecord::Base
|
67
66
|
end
|
68
67
|
end
|
69
68
|
|
@@ -87,6 +86,7 @@ class SqlQuery
|
|
87
86
|
end
|
88
87
|
|
89
88
|
def prepare_variables
|
89
|
+
return unless @options.present?
|
90
90
|
@options.each do |k, v|
|
91
91
|
instance_variable_set("@#{k}", v)
|
92
92
|
end
|
data/spec/config_spec.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SqlQuery::Config do
|
4
|
+
describe 'initialize' do
|
5
|
+
it 'sets path to default' do
|
6
|
+
expect(described_class.new.path).to eq('/app/sql_queries')
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'sets adapter to ActiveRecord::Base' do
|
10
|
+
expect(described_class.new.adapter).to eq(ActiveRecord::Base)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/spec/sql_query_spec.rb
CHANGED
@@ -6,6 +6,10 @@ describe SqlQuery do
|
|
6
6
|
let(:file_name) { :get_player_by_email }
|
7
7
|
let(:query) { described_class.new(file_name, options) }
|
8
8
|
|
9
|
+
class Model < ActiveRecord::Base
|
10
|
+
self.abstract_class = true
|
11
|
+
end
|
12
|
+
|
9
13
|
describe '#initialize' do
|
10
14
|
|
11
15
|
it 'sets instance variables for all options' do
|
@@ -20,13 +24,21 @@ describe SqlQuery do
|
|
20
24
|
end
|
21
25
|
end
|
22
26
|
|
23
|
-
context 'file_name argument is not Symbol or String' do
|
27
|
+
context 'when file_name argument is not Symbol or String' do
|
24
28
|
let(:file_name) { { do: 'something' } }
|
25
29
|
|
26
30
|
it 'raises ArgumentError' do
|
27
31
|
expect{ query }.to raise_error(ArgumentError, 'SQL file name should be String or Symbol')
|
28
32
|
end
|
29
33
|
end
|
34
|
+
|
35
|
+
context 'with db_connection option' do
|
36
|
+
let(:options) { { db_connection: Model.connection } }
|
37
|
+
|
38
|
+
it 'sets connection to requested' do
|
39
|
+
expect(query.connection).to eq(Model.connection)
|
40
|
+
end
|
41
|
+
end
|
30
42
|
end
|
31
43
|
|
32
44
|
describe '#file_path' do
|
@@ -121,6 +133,17 @@ describe SqlQuery do
|
|
121
133
|
it 'resolves partials as parts of sql queries' do
|
122
134
|
expect(query.sql).to eq("SELECT *\nFROM players\nWHERE players.email = 'e@mail.dev'\n\n")
|
123
135
|
end
|
136
|
+
|
137
|
+
context 'when partial name is string with file path' do
|
138
|
+
let(:file_name) { :get_player_by_email }
|
139
|
+
|
140
|
+
it 'should find file by whole path and _name' do
|
141
|
+
query
|
142
|
+
expect(described_class)
|
143
|
+
.to receive(:new).with('some/path/to/_file.sql', options) { query }
|
144
|
+
query.partial('some/path/to/file.sql', {})
|
145
|
+
end
|
146
|
+
end
|
124
147
|
end
|
125
148
|
|
126
149
|
describe '#prepared_for_logs' do
|
@@ -129,4 +152,10 @@ describe SqlQuery do
|
|
129
152
|
.to eq("SELECT * FROM players WHERE email = 'e@mail.dev' ")
|
130
153
|
end
|
131
154
|
end
|
155
|
+
|
156
|
+
describe '.config' do
|
157
|
+
it 'returns configuration instance' do
|
158
|
+
expect(described_class.config).to be_kind_of(SqlQuery::Config)
|
159
|
+
end
|
160
|
+
end
|
132
161
|
end
|
data/sql_query.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "sql_query"
|
7
|
-
spec.version = "0.
|
7
|
+
spec.version = "0.5.0"
|
8
8
|
spec.authors = ["sufleR"]
|
9
9
|
spec.email = ["szymon.fracczak@gmail.com"]
|
10
10
|
spec.summary = %q{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.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sufleR
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -159,6 +159,7 @@ files:
|
|
159
159
|
- gemfiles/4.1.gemfile
|
160
160
|
- gemfiles/4.2.gemfile
|
161
161
|
- lib/sql_query.rb
|
162
|
+
- spec/config_spec.rb
|
162
163
|
- spec/spec_helper.rb
|
163
164
|
- spec/sql_queries/_email_partial.sql.erb
|
164
165
|
- spec/sql_queries/duplicated.erb.sql
|
@@ -193,6 +194,7 @@ signing_key:
|
|
193
194
|
specification_version: 4
|
194
195
|
summary: Ruby gem to load and execute SQL queries from `.sql.erb` templates
|
195
196
|
test_files:
|
197
|
+
- spec/config_spec.rb
|
196
198
|
- spec/spec_helper.rb
|
197
199
|
- spec/sql_queries/_email_partial.sql.erb
|
198
200
|
- spec/sql_queries/duplicated.erb.sql
|