File tree 5 files changed +46
-0
lines changed
5 files changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -42,6 +42,10 @@ def visit(node)
42
42
self
43
43
end
44
44
45
+ def visit_literal ( node )
46
+ add_node ( Nodes ::Literal , value : node [ 0 ] )
47
+ end
48
+
45
49
def visit_from ( node )
46
50
source , _ = node
47
51
add_node ( Nodes ::From , source : source )
Original file line number Diff line number Diff line change 4
4
5
5
require "sql/composer/compiler"
6
6
require "sql/composer/tokens"
7
+ require "sql/composer/nodes/literal"
7
8
8
9
module SQL
9
10
module Composer
@@ -31,6 +32,12 @@ def call
31
32
compiler . ( ast )
32
33
end
33
34
35
+ def `( value )
36
+ Nodes ::Literal . new ( value : value )
37
+ end
38
+
39
+ private
40
+
34
41
def method_missing ( name , *args )
35
42
ast << [ name . to_s . downcase , *args ]
36
43
self
Original file line number Diff line number Diff line change 1
1
# frozen_string_literal: true
2
2
3
+ require "sql/composer/nodes/literal"
3
4
require "sql/composer/nodes/identifier"
4
5
require "sql/composer/nodes/select"
5
6
require "sql/composer/nodes/from"
Original file line number Diff line number Diff line change
1
+ # frozen_string_literal: true
2
+
3
+ require "sql/composer/nodes/core"
4
+
5
+ module SQL
6
+ module Composer
7
+ module Nodes
8
+ class Literal < Core
9
+ def value
10
+ fetch ( :value )
11
+ end
12
+ alias_method :to_s , :value
13
+ end
14
+ end
15
+ end
16
+ end
Original file line number Diff line number Diff line change @@ -27,6 +27,24 @@ def compose(&block)
27
27
end
28
28
29
29
describe "SELECT" do
30
+ context "with literals" do
31
+ let ( :query ) do
32
+ compose {
33
+ SELECT `"users"."id"` , `"users"."name"`
34
+ FROM `"users"`
35
+ }
36
+ end
37
+
38
+ specify do
39
+ expect ( result ) . to eql (
40
+ <<~SQL . strip
41
+ SELECT "users"."id", "users"."name"
42
+ FROM "users"
43
+ SQL
44
+ )
45
+ end
46
+ end
47
+
30
48
context "without WHERE" do
31
49
let ( :query ) do
32
50
compose { |users |
You can’t perform that action at this time.
0 commit comments