sqlstmt 0.1.7 → 0.1.8

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.
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