@@ -9,6 +9,93 @@ import (
99 "github.com/ulule/loukoum/v3/stmt"
1010)
1111
12+ func TestSelect_Value (t * testing.T ) {
13+ RunBuilderTests (t , []BuilderTest {
14+ {
15+ Name : "ValueEqual" ,
16+ Builder : loukoum .Select ("id" ).
17+ From ("video" ).
18+ Where (
19+ loukoum .Value ("fr" ).
20+ Equal (loukoum .Raw ("ANY(string_to_array(languages, ','))" )),
21+ ),
22+ String : "SELECT id FROM video WHERE ('fr' = ANY(string_to_array(languages, ',')))" ,
23+ Query : "SELECT id FROM video WHERE ($1 = ANY(string_to_array(languages, ',')))" ,
24+ NamedQuery : "SELECT id FROM video WHERE (:arg_1 = ANY(string_to_array(languages, ',')))" ,
25+ Args : []interface {}{"fr" },
26+ },
27+ {
28+ Name : "ValueNotEqual" ,
29+ Builder : loukoum .Select ("id" ).
30+ From ("video" ).
31+ Where (
32+ loukoum .Value ("fr" ).
33+ NotEqual (loukoum .Raw ("ANY(string_to_array(languages, ','))" )),
34+ ),
35+ String : "SELECT id FROM video WHERE ('fr' != ANY(string_to_array(languages, ',')))" ,
36+ Query : "SELECT id FROM video WHERE ($1 != ANY(string_to_array(languages, ',')))" ,
37+ NamedQuery : "SELECT id FROM video WHERE (:arg_1 != ANY(string_to_array(languages, ',')))" ,
38+ Args : []interface {}{"fr" },
39+ },
40+ {
41+ Name : "ValueOverlap" ,
42+ Builder : loukoum .Select ("id" ).
43+ From ("video" ).
44+ Where (
45+ loukoum .Value ("{fr}" ).
46+ Overlap (loukoum .Raw ("languages" )),
47+ ),
48+ String : "SELECT id FROM video WHERE ('{fr}' && languages)" ,
49+ Query : "SELECT id FROM video WHERE ($1 && languages)" ,
50+ NamedQuery : "SELECT id FROM video WHERE (:arg_1 && languages)" ,
51+ Args : []interface {}{"{fr}" },
52+ },
53+ {
54+ Name : "ValueIsContainedBy" ,
55+ Builder : loukoum .Select ("id" ).
56+ From ("video" ).
57+ Where (
58+ loukoum .Value ("{fr}" ).
59+ IsContainedBy (loukoum .Raw ("languages" )),
60+ ),
61+ String : "SELECT id FROM video WHERE ('{fr}' <@ languages)" ,
62+ Query : "SELECT id FROM video WHERE ($1 <@ languages)" ,
63+ NamedQuery : "SELECT id FROM video WHERE (:arg_1 <@ languages)" ,
64+ Args : []interface {}{"{fr}" },
65+ },
66+ {
67+ Name : "IdentifierContains" ,
68+ Builder : loukoum .Select ("id" ).
69+ From ("video" ).
70+ Where (loukoum .Condition ("languages" ).Contains ("{fr}" )),
71+ String : "SELECT id FROM video WHERE (languages @> '{fr}')" ,
72+ Query : "SELECT id FROM video WHERE (languages @> $1)" ,
73+ NamedQuery : "SELECT id FROM video WHERE (languages @> :arg_1)" ,
74+ Args : []interface {}{"{fr}" },
75+ },
76+ {
77+ Name : "IdentifierIsContainsBy" ,
78+ Builder : loukoum .Select ("id" ).
79+ From ("video" ).
80+ Where (loukoum .Condition ("languages" ).IsContainedBy ("{fr}" )),
81+ String : "SELECT id FROM video WHERE (languages <@ '{fr}')" ,
82+ Query : "SELECT id FROM video WHERE (languages <@ $1)" ,
83+ NamedQuery : "SELECT id FROM video WHERE (languages <@ :arg_1)" ,
84+ Args : []interface {}{"{fr}" },
85+ },
86+ {
87+ Name : "IdentifierOverlap" ,
88+ Builder : loukoum .Select ("id" ).
89+ From ("video" ).
90+ Where (loukoum .Condition ("languages" ).Overlap ("{fr}" )),
91+ String : "SELECT id FROM video WHERE (languages && '{fr}')" ,
92+ Query : "SELECT id FROM video WHERE (languages && $1)" ,
93+ NamedQuery : "SELECT id FROM video WHERE (languages && :arg_1)" ,
94+ Args : []interface {}{"{fr}" },
95+ },
96+ })
97+ }
98+
1299func TestSelect_Columns (t * testing.T ) {
13100 RunBuilderTests (t , []BuilderTest {
14101 {
0 commit comments