From 06ff4227af473c320c89c78f3e1bb031b420fc02 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Mon, 20 Mar 2017 15:56:36 +0100 Subject: [PATCH] add LIKE --- lib/rebel/sql.rb | 4 ++++ test/test_raw.rb | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lib/rebel/sql.rb b/lib/rebel/sql.rb index eb9854a..d3d980e 100644 --- a/lib/rebel/sql.rb +++ b/lib/rebel/sql.rb @@ -137,6 +137,10 @@ module Rebel::SQL def in(*v) Raw.new("#{self} IN (#{Rebel::SQL.values(*v)})") end + + def like(n) + Raw.new("#{self} LIKE #{Rebel::SQL.value(n)}") + end end @identifier_quote = '"' diff --git a/test/test_raw.rb b/test/test_raw.rb index 8956874..d28f7a9 100644 --- a/test/test_raw.rb +++ b/test/test_raw.rb @@ -67,6 +67,10 @@ class TestRaw < Minitest::Test assert_str_equal(Rebel::SQL.name(:foo).in(1, 2, 3), '"foo" IN (1, 2, 3)') end + def test_like + assert_str_equal(Rebel::SQL.name(:foo).like('%bar%'), %("foo" LIKE '%bar%')) + end + def test_where assert_str_equal(Rebel::SQL.where?(foo: 1, bar: 2, baz: 3), 'WHERE "foo" = 1 AND "bar" = 2 AND "baz" = 3') assert_str_equal(Rebel::SQL.where?(Rebel::SQL.name(:foo).eq(1).or(Rebel::SQL.name(:bar).eq(2)), Rebel::SQL.name(:baz).eq(3)), 'WHERE ("foo" = 1 OR "bar" = 2) AND "baz" = 3')