sqlstmt 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/sqlstmt/query.rb +12 -4
  2. data/test/select.dt.rb +2 -0
  3. metadata +2 -2
data/lib/sqlstmt/query.rb CHANGED
@@ -12,7 +12,7 @@ class Query
12
12
  @tables = []
13
13
  @joins = []
14
14
  @wheres = []
15
- @use_wheres = true
15
+ @where_behavior = :require
16
16
  end
17
17
 
18
18
  def table(table)
@@ -46,7 +46,12 @@ class Query
46
46
  end
47
47
 
48
48
  def no_where
49
- @use_wheres = false
49
+ @where_behavior = :exclude
50
+ self
51
+ end
52
+
53
+ def optional_where
54
+ @where_behavior = :optional
50
55
  self
51
56
  end
52
57
 
@@ -57,8 +62,11 @@ class Query
57
62
 
58
63
  private
59
64
  def verify_minimum_requirements
60
- raise SqlStmt::Error, "unable to build sql - must call :where or :no_where" if @use_wheres && @wheres.empty?
61
- raise SqlStmt::Error, "unable to build sql - :where and :no_where must not both be called" if !@use_wheres && !@wheres.empty?
65
+ if (@where_behavior == :require) && @wheres.empty?
66
+ raise SqlStmt::Error, "unable to build sql - must call :where, :no_where, or :optional_where"
67
+ elsif (@where_behavior == :exclude) && !@wheres.empty?
68
+ raise SqlStmt::Error, "unable to build sql - :where and :no_where must not both be called, consider :optional_where instead"
69
+ end
62
70
  end
63
71
 
64
72
  def build_table_list
data/test/select.dt.rb CHANGED
@@ -6,6 +6,8 @@ class TestSelect < DohTest::TestGroup
6
6
  def test_minimum_requirements
7
7
  assert_raises(SqlStmt::Error) { Select.new.table('target').to_s }
8
8
  assert_raises(SqlStmt::Error) { Select.new.table('target').no_where.to_s }
9
+ assert_raises(SqlStmt::Error) { Select.new.table('target').optional_where.to_s }
10
+ assert_equal('SELECT blah FROM target', Select.new.table('target').optional_where.field('blah').to_s)
9
11
  end
10
12
 
11
13
  def test_stuff
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.1.7
4
+ version: 0.1.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-04-19 00:00:00.000000000 Z
13
+ date: 2013-05-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: dohutil