mirror of
https://github.com/lloeki/rebel.git
synced 2025-12-06 10:04:39 +01:00
Add IS NOT, NOT IN, NOT LIKE
This commit is contained in:
parent
000e7f2ae2
commit
422defeecd
2 changed files with 23 additions and 0 deletions
|
|
@ -132,6 +132,7 @@ module Rebel::SQL
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
alias != ne
|
alias != ne
|
||||||
|
alias is_not ne
|
||||||
|
|
||||||
def lt(n)
|
def lt(n)
|
||||||
Raw.new("#{self} < #{Rebel::SQL.name_or_value(n)}")
|
Raw.new("#{self} < #{Rebel::SQL.name_or_value(n)}")
|
||||||
|
|
@ -157,9 +158,17 @@ module Rebel::SQL
|
||||||
Raw.new("#{self} IN (#{Rebel::SQL.values(*v)})")
|
Raw.new("#{self} IN (#{Rebel::SQL.values(*v)})")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def not_in(*v)
|
||||||
|
Raw.new("#{self} NOT IN (#{Rebel::SQL.values(*v)})")
|
||||||
|
end
|
||||||
|
|
||||||
def like(n)
|
def like(n)
|
||||||
Raw.new("#{self} LIKE #{Rebel::SQL.value(n)}")
|
Raw.new("#{self} LIKE #{Rebel::SQL.value(n)}")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def not_like(n)
|
||||||
|
Raw.new("#{self} NOT LIKE #{Rebel::SQL.value(n)}")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@identifier_quote = '"'
|
@identifier_quote = '"'
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,12 @@ class TestRaw < Minitest::Test
|
||||||
assert_sql('"foo" = "bar"') { name(:foo).is(name(:bar)) }
|
assert_sql('"foo" = "bar"') { name(:foo).is(name(:bar)) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_is_not
|
||||||
|
assert_sql('"foo" IS NOT NULL') { name(:foo).is_not(nil) }
|
||||||
|
assert_sql('"foo" != 42') { name(:foo).is_not(42) }
|
||||||
|
assert_sql('"foo" != "bar"') { name(:foo).is_not(name(:bar)) }
|
||||||
|
end
|
||||||
|
|
||||||
def test_eq
|
def test_eq
|
||||||
assert_sql('"foo" IS NULL') { name(:foo).eq(nil) }
|
assert_sql('"foo" IS NULL') { name(:foo).eq(nil) }
|
||||||
assert_sql('"foo" IS NULL') { name(:foo) == nil }
|
assert_sql('"foo" IS NULL') { name(:foo) == nil }
|
||||||
|
|
@ -78,10 +84,18 @@ class TestRaw < Minitest::Test
|
||||||
assert_sql('"foo" IN (1, 2, 3)') { name(:foo).in(1, 2, 3) }
|
assert_sql('"foo" IN (1, 2, 3)') { name(:foo).in(1, 2, 3) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_not_in
|
||||||
|
assert_sql('"foo" NOT IN (1, 2, 3)') { name(:foo).not_in(1, 2, 3) }
|
||||||
|
end
|
||||||
|
|
||||||
def test_like
|
def test_like
|
||||||
assert_sql(%("foo" LIKE '%bar%')) { name(:foo).like('%bar%') }
|
assert_sql(%("foo" LIKE '%bar%')) { name(:foo).like('%bar%') }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_not_like
|
||||||
|
assert_sql(%("foo" NOT LIKE '%bar%')) { name(:foo).not_like('%bar%') }
|
||||||
|
end
|
||||||
|
|
||||||
def test_where
|
def test_where
|
||||||
assert_sql('WHERE "foo" = 1 AND "bar" = 2 AND "baz" = 3') { where?(foo: 1, bar: 2, baz: 3) }
|
assert_sql('WHERE "foo" = 1 AND "bar" = 2 AND "baz" = 3') { where?(foo: 1, bar: 2, baz: 3) }
|
||||||
assert_sql('WHERE ("foo" = 1 OR "bar" = 2) AND "baz" = 3') { where?(name(:foo).eq(1).or(name(:bar).eq(2)), name(:baz).eq(3)) }
|
assert_sql('WHERE ("foo" = 1 OR "bar" = 2) AND "baz" = 3') { where?(name(:foo).eq(1).or(name(:bar).eq(2)), name(:baz).eq(3)) }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue