Skip to content

Commit a0a3fb0

Browse files
authored
Merge pull request #5 from sql-rb/where-with-or
Where with or
2 parents c2d4753 + 5a70299 commit a0a3fb0

File tree

4 files changed

+45
-0
lines changed

4 files changed

+45
-0
lines changed

lib/sql/composer/nodes.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@
66
require "sql/composer/nodes/where"
77
require "sql/composer/nodes/order"
88
require "sql/composer/nodes/operations/eql"
9+
require "sql/composer/nodes/operations/or"
910
require "sql/composer/nodes/operations/order_direction"
1011
require "sql/composer/nodes/value"

lib/sql/composer/nodes/operations/eql.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ def initialize(left, right)
1111
@left, @right = left, right
1212
end
1313

14+
def or(other)
15+
Operations::Or.new(self, other)
16+
end
17+
alias_method :OR, :or
18+
1419
def to_s
1520
"#{left.to_s} == #{right.to_s}"
1621
end
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# frozen_string_literal: true
2+
3+
module SQL
4+
module Composer
5+
module Nodes
6+
module Operations
7+
class Or
8+
attr_reader :left, :right
9+
10+
def initialize(left, right)
11+
@left, @right = left, right
12+
end
13+
14+
def to_s
15+
"(#{left.to_s}) OR (#{right.to_s})"
16+
end
17+
end
18+
end
19+
end
20+
end
21+
end

spec/integration/sql/compose_spec.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,24 @@ def build(&block)
5757
end
5858
end
5959

60+
context "with WHERE and two conditions" do
61+
specify do
62+
result = build { |users|
63+
SELECT users.id, users.name
64+
FROM users.table
65+
WHERE (users.name == "Jane").OR(users.name == "Jade")
66+
}
67+
68+
expect(result.to_s).to eql(
69+
<<~SQL.strip
70+
SELECT "users"."id", "users"."name"
71+
FROM "users"
72+
WHERE ("users"."name" == 'Jane') OR ("users"."name" == 'Jade')
73+
SQL
74+
)
75+
end
76+
end
77+
6078
context "without ORDER" do
6179
specify do
6280
result = build { |users|

0 commit comments

Comments
 (0)