yesql 0.1.1 → 0.1.6

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: 5c342b76a655011550ac627d5f117e183723309e22a5ab67dd896278f2e321c9
4
- data.tar.gz: 7736ced5895925341a027f59d8814d792eebd7c1fa113bea165ad1dd9c4fa5d0
3
+ metadata.gz: 8f432f23ac16148c7439ec096a55c142c9985c537d06ef5ded891fb3178d3bbf
4
+ data.tar.gz: b5d82c03933a0401d4b24a3fd48f00ea3864adfb8566db7f73c518714784cc54
5
5
  SHA512:
6
- metadata.gz: 35190a0eaecbb93b945592e91279b0f932207b574d1341d9a1013f568d1854fd0f5e9962b21c27ecb11ded93437fb33724602ca73138f7ad46310be1aba9aa20
7
- data.tar.gz: 96b1844015c909c4de69214c74a46a8870f675f61b3bb727ac73038cf98a4a37d6b489ea12bcaf8fd861369de20e2bae3b5a2e1d5075a3ba1d693371eecd2820
6
+ metadata.gz: '084397cf83aa10faf2d724a0be1c11548e36dd515932c4552498c130a96efb044ca5f498aa30d4ec9c002ea1f36c4ec3699bcd4e6e2db2313b0b56fab9da2ae5'
7
+ data.tar.gz: 70a91ebc63c23cd5c653351e728fc9c93207fd2583b1b72629d63717ba8e105c86318b016110f3040fd681b176da4d80db2807c40b4859ac3192c1a160901572
@@ -0,0 +1,4 @@
1
+ spec/minimalpg/log/*
2
+ spec/minimalmysql/log/*
3
+ spec/minimalpg/db/*
4
+ spec/minimalmysql/db/*
@@ -0,0 +1,8 @@
1
+ require: rubocop-rspec
2
+
3
+ RSpec/FilePath:
4
+ Exclude:
5
+ - spec/**/*_spec.rb
6
+
7
+ RSpec/NestedGroups:
8
+ Enabled: False
@@ -1,63 +1,62 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yesql (0.1.0)
5
- dry-configurable (~> 0.11.6)
4
+ yesql (0.1.5)
6
5
  rails (>= 5.0)
7
6
 
8
7
  GEM
9
8
  remote: https://rubygems.org/
10
9
  specs:
11
- actioncable (6.0.3.3)
12
- actionpack (= 6.0.3.3)
10
+ actioncable (6.0.3.4)
11
+ actionpack (= 6.0.3.4)
13
12
  nio4r (~> 2.0)
14
13
  websocket-driver (>= 0.6.1)
15
- actionmailbox (6.0.3.3)
16
- actionpack (= 6.0.3.3)
17
- activejob (= 6.0.3.3)
18
- activerecord (= 6.0.3.3)
19
- activestorage (= 6.0.3.3)
20
- activesupport (= 6.0.3.3)
14
+ actionmailbox (6.0.3.4)
15
+ actionpack (= 6.0.3.4)
16
+ activejob (= 6.0.3.4)
17
+ activerecord (= 6.0.3.4)
18
+ activestorage (= 6.0.3.4)
19
+ activesupport (= 6.0.3.4)
21
20
  mail (>= 2.7.1)
22
- actionmailer (6.0.3.3)
23
- actionpack (= 6.0.3.3)
24
- actionview (= 6.0.3.3)
25
- activejob (= 6.0.3.3)
21
+ actionmailer (6.0.3.4)
22
+ actionpack (= 6.0.3.4)
23
+ actionview (= 6.0.3.4)
24
+ activejob (= 6.0.3.4)
26
25
  mail (~> 2.5, >= 2.5.4)
27
26
  rails-dom-testing (~> 2.0)
28
- actionpack (6.0.3.3)
29
- actionview (= 6.0.3.3)
30
- activesupport (= 6.0.3.3)
27
+ actionpack (6.0.3.4)
28
+ actionview (= 6.0.3.4)
29
+ activesupport (= 6.0.3.4)
31
30
  rack (~> 2.0, >= 2.0.8)
32
31
  rack-test (>= 0.6.3)
33
32
  rails-dom-testing (~> 2.0)
34
33
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
35
- actiontext (6.0.3.3)
36
- actionpack (= 6.0.3.3)
37
- activerecord (= 6.0.3.3)
38
- activestorage (= 6.0.3.3)
39
- activesupport (= 6.0.3.3)
34
+ actiontext (6.0.3.4)
35
+ actionpack (= 6.0.3.4)
36
+ activerecord (= 6.0.3.4)
37
+ activestorage (= 6.0.3.4)
38
+ activesupport (= 6.0.3.4)
40
39
  nokogiri (>= 1.8.5)
41
- actionview (6.0.3.3)
42
- activesupport (= 6.0.3.3)
40
+ actionview (6.0.3.4)
41
+ activesupport (= 6.0.3.4)
43
42
  builder (~> 3.1)
44
43
  erubi (~> 1.4)
45
44
  rails-dom-testing (~> 2.0)
46
45
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
47
- activejob (6.0.3.3)
48
- activesupport (= 6.0.3.3)
46
+ activejob (6.0.3.4)
47
+ activesupport (= 6.0.3.4)
49
48
  globalid (>= 0.3.6)
50
- activemodel (6.0.3.3)
51
- activesupport (= 6.0.3.3)
52
- activerecord (6.0.3.3)
53
- activemodel (= 6.0.3.3)
54
- activesupport (= 6.0.3.3)
55
- activestorage (6.0.3.3)
56
- actionpack (= 6.0.3.3)
57
- activejob (= 6.0.3.3)
58
- activerecord (= 6.0.3.3)
49
+ activemodel (6.0.3.4)
50
+ activesupport (= 6.0.3.4)
51
+ activerecord (6.0.3.4)
52
+ activemodel (= 6.0.3.4)
53
+ activesupport (= 6.0.3.4)
54
+ activestorage (6.0.3.4)
55
+ actionpack (= 6.0.3.4)
56
+ activejob (= 6.0.3.4)
57
+ activerecord (= 6.0.3.4)
59
58
  marcel (~> 0.3.1)
60
- activesupport (6.0.3.3)
59
+ activesupport (6.0.3.4)
61
60
  concurrent-ruby (~> 1.0, >= 1.0.2)
62
61
  i18n (>= 0.7, < 2)
63
62
  minitest (~> 5.1)
@@ -68,13 +67,6 @@ GEM
68
67
  concurrent-ruby (1.1.7)
69
68
  crass (1.0.6)
70
69
  diff-lcs (1.4.4)
71
- dry-configurable (0.11.6)
72
- concurrent-ruby (~> 1.0)
73
- dry-core (~> 0.4, >= 0.4.7)
74
- dry-equalizer (~> 0.2)
75
- dry-core (0.4.9)
76
- concurrent-ruby (~> 1.0)
77
- dry-equalizer (0.3.0)
78
70
  erubi (1.9.0)
79
71
  globalid (0.4.2)
80
72
  activesupport (>= 4.2.0)
@@ -92,7 +84,8 @@ GEM
92
84
  mini_mime (1.0.2)
93
85
  mini_portile2 (2.4.0)
94
86
  minitest (5.14.2)
95
- nio4r (2.5.3)
87
+ mysql2 (0.5.3)
88
+ nio4r (2.5.4)
96
89
  nokogiri (1.10.10)
97
90
  mini_portile2 (~> 2.4.0)
98
91
  pg (1.2.3)
@@ -102,29 +95,29 @@ GEM
102
95
  rack (2.2.3)
103
96
  rack-test (1.1.0)
104
97
  rack (>= 1.0, < 3)
105
- rails (6.0.3.3)
106
- actioncable (= 6.0.3.3)
107
- actionmailbox (= 6.0.3.3)
108
- actionmailer (= 6.0.3.3)
109
- actionpack (= 6.0.3.3)
110
- actiontext (= 6.0.3.3)
111
- actionview (= 6.0.3.3)
112
- activejob (= 6.0.3.3)
113
- activemodel (= 6.0.3.3)
114
- activerecord (= 6.0.3.3)
115
- activestorage (= 6.0.3.3)
116
- activesupport (= 6.0.3.3)
98
+ rails (6.0.3.4)
99
+ actioncable (= 6.0.3.4)
100
+ actionmailbox (= 6.0.3.4)
101
+ actionmailer (= 6.0.3.4)
102
+ actionpack (= 6.0.3.4)
103
+ actiontext (= 6.0.3.4)
104
+ actionview (= 6.0.3.4)
105
+ activejob (= 6.0.3.4)
106
+ activemodel (= 6.0.3.4)
107
+ activerecord (= 6.0.3.4)
108
+ activestorage (= 6.0.3.4)
109
+ activesupport (= 6.0.3.4)
117
110
  bundler (>= 1.3.0)
118
- railties (= 6.0.3.3)
111
+ railties (= 6.0.3.4)
119
112
  sprockets-rails (>= 2.0.0)
120
113
  rails-dom-testing (2.0.3)
121
114
  activesupport (>= 4.2.0)
122
115
  nokogiri (>= 1.6)
123
116
  rails-html-sanitizer (1.3.0)
124
117
  loofah (~> 2.3)
125
- railties (6.0.3.3)
126
- actionpack (= 6.0.3.3)
127
- activesupport (= 6.0.3.3)
118
+ railties (6.0.3.4)
119
+ actionpack (= 6.0.3.4)
120
+ activesupport (= 6.0.3.4)
128
121
  method_source
129
122
  rake (>= 0.8.7)
130
123
  thor (>= 0.20.3, < 2.0)
@@ -163,6 +156,7 @@ PLATFORMS
163
156
  ruby
164
157
 
165
158
  DEPENDENCIES
159
+ mysql2 (~> 0.5.3)
166
160
  pg (>= 0.18)
167
161
  pry (~> 0.13.1)
168
162
  rspec (~> 3.9.0)
data/README.md CHANGED
@@ -70,7 +70,6 @@ YeSQL('top_10_users_in_x_country', { country: 'Cuba', country_id: 1, limit: 6 })
70
70
  ```
71
71
 
72
72
  - If the query doesn't have bindings, but they're provided they're just omitted.
73
- TODO: update this with link to the error.
74
73
  - If the query has bindings, but nothing is provided, it raises a `NotImplementedError` exception.
75
74
 
76
75
 
@@ -145,21 +144,21 @@ YeSQL('users', cache: { expires_in: 1.hour })
145
144
 
146
145
  ## Configuration
147
146
 
148
- For default `YeSQL` looks for the _.sql_ files defined under the `app/yesql/` folder but you can update it to use any folder you need. For that you can create a Ruby file under the `config/initializers/` folder as:
147
+ For default `YeSQL` looks for the _.sql_ files defined under the `app/yesql/` folder but you can update it to use any folder you need. For that you can create a Ruby file under the `config/initializers/` with the following content:
149
148
 
150
149
  ```ruby
151
- YeSQL.config.path = 'path'
150
+ ::YeSQL.configure { |config| config.path = 'path' }
152
151
  ```
153
152
 
154
153
  After saving the file and restarting the server the files are going to be read from the given folder.
155
154
 
156
- You can check at anytime what's the configuration path by inspecting the YeSQL `config` object:
155
+ You can check at anytime what's the configuration path by inspecting the ::YeSQL `config` object:
157
156
 
158
157
  ```ruby
159
- YeSQL.config
160
- # <Dry::Configurable::Config values={:path=>"path"}>
161
- Yesql.config.path
162
- # "path"
158
+ ::YeSQL.config
159
+ # => #<YeSQL::Config::Configuration:0x00007feea1aa2ef8 @path="app/yesql">
160
+ ::YeSQL.config.path
161
+ # => "app/yesql"
163
162
  ```
164
163
 
165
164
 
@@ -167,7 +166,7 @@ Yesql.config.path
167
166
 
168
167
  - Clone the repository.
169
168
  - Install the gem dependencies.
170
- - Make sure to create the database used in the dummy Rails application in the spec/ folder.
169
+ - Make sure to create both databases used in the dummy Rails applications (mysql, pg) in the spec/ folder.
171
170
  - Run the tests.
172
171
 
173
172
  ## Contributing
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry-configurable'
4
- require 'pry'
5
3
  require 'yesql/version'
4
+ require 'yesql/config/configuration'
6
5
  require 'yesql/query/performer'
7
6
  require 'yesql/errors/cache_expiration_error'
8
7
  require 'yesql/errors/file_path_does_not_exist_error'
@@ -11,15 +10,12 @@ require 'yesql/errors/output_argument_error'
11
10
  require 'yesql/bindings/binder'
12
11
 
13
12
  module YeSQL
14
- extend ::Dry::Configurable
15
-
13
+ include ::YeSQL::Config
16
14
  include ::YeSQL::Errors::CacheExpirationError
17
15
  include ::YeSQL::Errors::FilePathDoesNotExistError
18
16
  include ::YeSQL::Errors::NoBindingsProvidedError
19
17
  include ::YeSQL::Errors::OutputArgumentError
20
18
 
21
- setting :path, 'app/yesql'
22
-
23
19
  BIND_REGEX = /(?<!:):(\w+)(?=\b)/.freeze
24
20
 
25
21
  # rubocop:disable Naming/MethodName
@@ -2,9 +2,11 @@
2
2
 
3
3
  require 'yesql'
4
4
 
5
- module YeSQL
5
+ module ::YeSQL
6
6
  module Bindings
7
7
  class Extract
8
+ include ::YeSQL::Common::Adapter
9
+
8
10
  def initialize(indexed_bindings, hash, index, value)
9
11
  @indexed_bindings = indexed_bindings
10
12
  @hash = hash
@@ -19,9 +21,15 @@ module YeSQL
19
21
  end
20
22
 
21
23
  def bind_vars
22
- return "$#{last_val}" unless array?
24
+ if mysql?
25
+ return '?' unless array?
26
+
27
+ Array.new(value.size, '?').join(', ')
28
+ elsif pg?
29
+ return "$#{last_val}" unless array?
23
30
 
24
- value.map.with_index(bind_index) { |_, i| "$#{i}" }.join(', ')
31
+ value.map.with_index(bind_index) { |_, i| "$#{i}" }.join(', ')
32
+ end
25
33
  end
26
34
 
27
35
  def last_val
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yesql'
4
+ require 'yesql/common/adapter'
5
+
6
+ module ::YeSQL
7
+ module Bindings
8
+ class Transformed
9
+ include ::YeSQL::Common::Adapter
10
+
11
+ def initialize(statement_binds:)
12
+ @statement_binds = statement_binds
13
+ end
14
+
15
+ def call
16
+ return mysql_rails5_binds if rails5? && mysql?
17
+ return mysql_binds if !rails5? && mysql?
18
+
19
+ pg_binds
20
+ end
21
+
22
+ private
23
+
24
+ attr_reader :statement_binds
25
+
26
+ def rails5?
27
+ ::Rails::VERSION::MAJOR == 5
28
+ end
29
+
30
+ def mysql_rails5_binds
31
+ statement_binds
32
+ .map(&:first)
33
+ .flatten(1)
34
+ .each_slice(2)
35
+ .flat_map do |first, last|
36
+ next [first, last].map(&:last) if first.is_a?(Array)
37
+
38
+ last
39
+ end
40
+ end
41
+
42
+ def mysql_binds
43
+ statement_binds
44
+ .map(&:first)
45
+ .flatten
46
+ .each_slice(2)
47
+ .to_a
48
+ end
49
+
50
+ def pg_binds
51
+ statement_binds
52
+ .sort_by { |_, position| position.to_s.tr('$', '').to_i }
53
+ .uniq
54
+ .map(&:first)
55
+ .flatten
56
+ .each_slice(2)
57
+ .to_a
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+
5
+ module ::YeSQL
6
+ module Common
7
+ module Adapter
8
+ extend Forwardable
9
+
10
+ # `adapter` might be a complex object, but
11
+ # for the sake of brevity it's just a string
12
+ def adapter
13
+ ::ActiveRecord::Base.connection.adapter_name
14
+ end
15
+
16
+ def mysql?
17
+ adapter == 'Mysql2'
18
+ end
19
+
20
+ def pg?
21
+ adapter == 'PostgreSQL'
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ::YeSQL
4
+ module Config
5
+ class Configuration
6
+ attr_accessor :path
7
+
8
+ DEFAULT_PATH = 'app/yesql'
9
+
10
+ def initialize
11
+ @path = DEFAULT_PATH
12
+ end
13
+ end
14
+ end
15
+
16
+ class << self
17
+ def config
18
+ @config ||= ::YeSQL::Configuration.new
19
+ end
20
+
21
+ def configure
22
+ yield config if block_given?
23
+ end
24
+
25
+ def reset_config
26
+ tap do |conf|
27
+ conf.configure do |configuration|
28
+ configuration.path = ::YeSQL::Configuration::DEFAULT_PATH
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yesql'
4
+ require 'forwardable'
5
+
6
+ module ::YeSQL
7
+ module Params
8
+ class Output
9
+ extend Forwardable
10
+
11
+ def initialize(output)
12
+ @output = output.to_s
13
+ end
14
+
15
+ def columns?
16
+ output == 'columns'
17
+ end
18
+
19
+ def rows?
20
+ output == 'rows'
21
+ end
22
+
23
+ def hash?
24
+ output == 'hash'
25
+ end
26
+
27
+ def_delegator(:output, :to_sym)
28
+
29
+ private
30
+
31
+ attr_reader :output
32
+ end
33
+ end
34
+ end
@@ -1,14 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'yesql'
4
- require 'forwardable'
5
4
  require 'yesql/bindings/utils'
5
+ require 'yesql/common/adapter'
6
+ require 'yesql/bindings/transformed'
7
+ require 'yesql/query/result'
8
+ require 'yesql/query/transform_result'
9
+ require 'yesql/params/output'
6
10
 
7
11
  module YeSQL
8
12
  module Query
9
13
  class Performer
10
- extend Forwardable
11
-
12
14
  include ::YeSQL::Bindings::Utils
13
15
 
14
16
  # rubocop:disable Metrics/ParameterLists
@@ -21,11 +23,10 @@ module YeSQL
21
23
  @bind_statement = bind_statement
22
24
  @cache = cache
23
25
  @cache_key = cache[:key] || file_path
24
- @connection = ActiveRecord::Base.connection
25
26
  @expires_in = cache[:expires_in]
26
27
  @file_path = file_path
27
28
  @named_bindings = bindings.transform_keys(&:to_sym)
28
- @output = output
29
+ @output = ::YeSQL::Params::Output.new(output)
29
30
  @prepare = prepare
30
31
  end
31
32
  # rubocop:enable Metrics/ParameterLists
@@ -41,7 +42,6 @@ module YeSQL
41
42
  attr_reader :bind_statement,
42
43
  :cache,
43
44
  :cache_key,
44
- :connection,
45
45
  :expires_in,
46
46
  :file_path,
47
47
  :named_bindings,
@@ -49,32 +49,24 @@ module YeSQL
49
49
  :prepare,
50
50
  :rows
51
51
 
52
- def_delegator(:query_result, :columns)
53
- private :columns
54
- def_delegator(:query_result, :rows)
55
- private :rows
56
-
57
52
  def modified_output
58
53
  @modified_output ||=
59
- begin
60
- return query_result.public_send(output) if %w[columns rows].include?(output.to_s)
61
-
62
- columns.map(&:to_sym).tap { |cols| break rows.map { |row| cols.zip(row).to_h } }
63
- end
54
+ ::YeSQL::Query::TransformResult.new(output: output, result: query_result).call
64
55
  end
65
56
 
66
57
  def query_result
67
- @query_result ||= connection.exec_query(bind_statement, file_path, binds, prepare: prepare)
58
+ @query_result ||= ::YeSQL::Query::Result.new(binds: binds,
59
+ bind_statement: bind_statement,
60
+ file_path: file_path,
61
+ prepare: prepare).call
62
+ end
63
+
64
+ def extractor
65
+ ::YeSQL::Bindings::Extractor.new(bindings: named_bindings).call
68
66
  end
69
67
 
70
68
  def binds
71
- ::YeSQL::Bindings::Extractor.new(bindings: named_bindings).call.tap do |extractor|
72
- break statement_binds(extractor).sort_by(&:last)
73
- .map(&:first)
74
- .flatten
75
- .each_slice(2)
76
- .to_a
77
- end
69
+ ::YeSQL::Bindings::Transformed.new(statement_binds: statement_binds(extractor)).call
78
70
  end
79
71
  end
80
72
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yesql'
4
+ require 'forwardable'
5
+ require 'yesql/common/adapter'
6
+
7
+ module ::YeSQL
8
+ module Query
9
+ class Result
10
+ extend Forwardable
11
+
12
+ include ::YeSQL::Common::Adapter
13
+
14
+ def initialize(binds:, bind_statement:, file_path:, prepare:)
15
+ @binds = binds
16
+ @bind_statement = bind_statement
17
+ @file_path = file_path
18
+ @prepare_option = prepare
19
+ end
20
+
21
+ def call
22
+ return rails5_result if ::Rails::VERSION::MAJOR == 5 && mysql?
23
+
24
+ exec_query(bind_statement, file_path, binds, prepare: prepare_option)
25
+ end
26
+
27
+ private
28
+
29
+ attr_reader :binds, :bind_statement, :file_path, :prepare_option
30
+
31
+ def_delegators(:connection, :exec_query, :raw_connection)
32
+ def_delegators(:raw_connection, :prepare)
33
+
34
+ def connection
35
+ ActiveRecord::Base.connection
36
+ end
37
+
38
+ def rails5_result
39
+ prepare(bind_statement).execute(*binds)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yesql'
4
+ require 'forwardable'
5
+
6
+ module ::YeSQL
7
+ module Query
8
+ class TransformResult
9
+ extend Forwardable
10
+
11
+ def initialize(output:, result:)
12
+ @output = output
13
+ @result = result
14
+ end
15
+
16
+ def call
17
+ if ::Rails::VERSION::MAJOR == 5
18
+ return columns if columns?
19
+ return rows_values if rows?
20
+ end
21
+
22
+ return result.public_send(output.to_sym) if columns? || rows?
23
+
24
+ array_of_symbol_hashes
25
+ end
26
+
27
+ private
28
+
29
+ attr_reader :output, :result
30
+
31
+ def_delegators(:result, :rows, :to_a)
32
+ def_delegators(:output, :columns?, :hash?, :rows?)
33
+
34
+ def rows_values
35
+ to_a.map { |e| e.respond_to?(:values) ? e.values : e }
36
+ end
37
+
38
+ def array_of_symbol_hashes
39
+ to_a.tap { |rows| break hashed_rows(rows) if ::Rails::VERSION::MAJOR == 5 }
40
+ .map { |e| e.respond_to?(:symbolize_keys) ? e.symbolize_keys : e }
41
+ end
42
+
43
+ def hashed_rows(rows)
44
+ rows.map { |row| columns.zip(row).to_h }
45
+ end
46
+
47
+ def columns
48
+ return result.fields if result.respond_to?(:fields)
49
+
50
+ result.columns
51
+ end
52
+ end
53
+ end
54
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module YeSQL
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.6'
5
5
  end
@@ -20,8 +20,8 @@ Gem::Specification.new do |spec|
20
20
  spec.bindir = 'exe'
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ['lib']
23
- spec.add_dependency 'dry-configurable', '~> 0.11.6'
24
23
  spec.add_dependency 'rails', '>= 5.0'
24
+ spec.add_development_dependency 'mysql2', '~> 0.5.3'
25
25
  spec.add_development_dependency 'pg', '>= 0.18'
26
26
  spec.add_development_dependency 'pry', '~> 0.13.1'
27
27
  spec.add_development_dependency 'rspec', '~> 3.9.0'
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yesql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastián Palma
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-11 00:00:00.000000000 Z
11
+ date: 2020-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: dry-configurable
14
+ name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.11.6
19
+ version: '5.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.11.6
26
+ version: '5.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rails
28
+ name: mysql2
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '5.0'
34
- type: :runtime
33
+ version: 0.5.3
34
+ type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '5.0'
40
+ version: 0.5.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pg
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -87,6 +87,8 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
+ - ".gitignore"
91
+ - ".rubocop.yml"
90
92
  - Gemfile
91
93
  - Gemfile.lock
92
94
  - LICENSE.txt
@@ -98,12 +100,18 @@ files:
98
100
  - lib/yesql/bindings/binder.rb
99
101
  - lib/yesql/bindings/extract.rb
100
102
  - lib/yesql/bindings/extractor.rb
103
+ - lib/yesql/bindings/transformed.rb
101
104
  - lib/yesql/bindings/utils.rb
105
+ - lib/yesql/common/adapter.rb
106
+ - lib/yesql/config/configuration.rb
102
107
  - lib/yesql/errors/cache_expiration_error.rb
103
108
  - lib/yesql/errors/file_path_does_not_exist_error.rb
104
109
  - lib/yesql/errors/no_bindings_provided_error.rb
105
110
  - lib/yesql/errors/output_argument_error.rb
111
+ - lib/yesql/params/output.rb
106
112
  - lib/yesql/query/performer.rb
113
+ - lib/yesql/query/result.rb
114
+ - lib/yesql/query/transform_result.rb
107
115
  - lib/yesql/utils/read.rb
108
116
  - lib/yesql/version.rb
109
117
  - yesql.gemspec
@@ -114,7 +122,7 @@ metadata:
114
122
  homepage_uri: https://github.com/sebastian-palma/yesql
115
123
  source_code_uri: https://github.com/sebastian-palma/yesql
116
124
  changelog_uri: https://github.com/sebastian-palma/yesql
117
- post_install_message:
125
+ post_install_message:
118
126
  rdoc_options: []
119
127
  require_paths:
120
128
  - lib
@@ -130,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
138
  version: '0'
131
139
  requirements: []
132
140
  rubygems_version: 3.1.2
133
- signing_key:
141
+ signing_key:
134
142
  specification_version: 4
135
143
  summary: Ruby library to use SQL
136
144
  test_files: []