sqlstmt 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sqlstmt/sqlstmt.rb +19 -5
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: be9ad2f845f1232665d90055dce82ff06cee0339
4
- data.tar.gz: 23b36babca7556403e80a85f64d87117bd0afc39
3
+ metadata.gz: b144b236ba23d79ce8976b26ef2b97e6606b380c
4
+ data.tar.gz: 8aa6ab17ea45dbb8955644f8cc643cb1bac9ac81
5
5
  SHA512:
6
- metadata.gz: a411a366d8aad05c009a1dbdd8adb436d96f2f368be14e7f6169e54ff13121f4e15e689295602093ce30b19721a4de8355adbf0b7bca93c61b9e1bdbf4c1015f
7
- data.tar.gz: c1fdf90de136162338a5f2ba580adc40d62d1b1f7acbf1466f09fd9931e6e702da84f4552865ca210a0c516869afcbb96de194a579670261fb7674a1d655bba7
6
+ metadata.gz: 3ce0433a3f12680d3873654c25d5c5e4347a9a329e54ba906ac4fa69de3304791bd0b6237e824b56b5ca82aa601551028417b153f293e687e582efe71b94818e
7
+ data.tar.gz: fcaa33fcdb9e95c3f167a9823e094c7ef8516e11fd0841efd741e183298dd07d1d57fcdb8d918bac576971aecfcb2ca5e2ad9ff9b16714464e4c27b06f7a314a
@@ -24,6 +24,8 @@ class SqlStmt
24
24
  @replace = nil
25
25
  @ignore = ''
26
26
  @outfile = ''
27
+ # track this explicitly to guarantee get is not used with non-select statements
28
+ @called_get = false
27
29
  end
28
30
 
29
31
  def initialize_copy(orig)
@@ -96,6 +98,7 @@ class SqlStmt
96
98
 
97
99
  def get(*exprs)
98
100
  @fields.concat(exprs)
101
+ @called_get = true
99
102
  return self
100
103
  end
101
104
 
@@ -223,7 +226,8 @@ private
223
226
  def verify_minimum_requirements
224
227
  if !@stmt_type
225
228
  raise SqlStmtError, "unable to build sql - must call :select, :update, :insert or :delete to specify statement type"
226
- elsif @tables.empty?
229
+ end
230
+ if @tables.empty?
227
231
  raise SqlStmtError, "unable to build sql - must call :table"
228
232
  end
229
233
 
@@ -235,12 +239,22 @@ private
235
239
 
236
240
  if @stmt_type == 'select'
237
241
  raise SqlStmtError, "unable to build sql - must call :get" if @fields.empty?
238
- elsif @stmt_type == 'update'
242
+ raise SqlStmtError, "unable to build sql - must not call :set" if !@values.empty?
243
+ else
244
+ raise SqlStmtError, "unable to build sql - must not call :get" if @called_get
245
+ end
246
+
247
+ if ['update','insert'].include?(@stmt_type)
239
248
  raise SqlStmtError, "unable to build sql - must call :set or :setq" if @fields.empty?
240
- elsif @stmt_type == 'insert'
249
+ raise SqlStmtError, "unable to build sql - must not call :get" if @called_get
250
+ end
251
+
252
+ if @stmt_type == 'insert'
241
253
  raise SqlStmtError, "unable to build sql - must call :into" if @into_table.nil?
242
- raise SqlStmtError, "unable to build sql - must call :set or :setq" if @fields.empty?
243
- elsif @stmt_type == 'delete'
254
+ end
255
+
256
+ if @stmt_type == 'delete'
257
+ raise SqlStmtError, "unable to build sql - must not call :get or :set" if !@fields.empty?
244
258
  if @tables_to_delete.empty? && ((@tables.size + @joins.size) > 1)
245
259
  raise SqlStmtError, "unable to build sql - must specify tables to delete when including multiple tables"
246
260
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqlstmt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Makani Mason
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-01-18 00:00:00.000000000 Z
12
+ date: 2016-01-19 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: build SQL statements in a modular fashion, one piece at a time; only
15
15
  used/tested with MySQL so far