data_table 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/data_table/active_record.rb +16 -9
- data/lib/data_table/version.rb +1 -1
- data/spec/active_record_data_table_spec.rb +12 -1
- metadata +2 -2
@@ -31,17 +31,24 @@ module DataTable
|
|
31
31
|
def _where_conditions query, search_fields, join_operator = "OR"
|
32
32
|
return if query.blank?
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
34
|
+
all_conditions = []
|
35
|
+
all_parameters = []
|
36
|
+
|
37
|
+
query.split.each do |term|
|
38
|
+
conditions = []
|
39
|
+
parameters = []
|
40
|
+
|
41
|
+
search_fields.each do |field|
|
42
|
+
next if (clause = _where_condition(term, field.dup)).empty?
|
43
|
+
conditions << clause.shift
|
44
|
+
parameters += clause
|
45
|
+
end
|
46
|
+
|
47
|
+
all_conditions << conditions
|
48
|
+
all_parameters << parameters
|
42
49
|
end
|
43
50
|
|
44
|
-
["(" + conditions.join(" #{join_operator} ") + ")", *
|
51
|
+
[all_conditions.map {|conditions| "(" + conditions.join(" #{join_operator} ") + ")" }.join(" AND "), *all_parameters.flatten]
|
45
52
|
end
|
46
53
|
|
47
54
|
def _where_condition query, field
|
data/lib/data_table/version.rb
CHANGED
@@ -32,7 +32,13 @@ describe DataTable do
|
|
32
32
|
send(:_where_conditions, "query", %w(foo bar)).should == ["(UPPER(foo) LIKE ? OR UPPER(bar) LIKE ?)", "%QUERY%", "%QUERY%"]
|
33
33
|
end
|
34
34
|
|
35
|
-
context "
|
35
|
+
context "with multiple terms" do
|
36
|
+
it "should return an AR array with conditions for all combinations of terms and fields" do
|
37
|
+
send(:_where_conditions, "q1 q2", %w(f1 f2)).should == ["(UPPER(f1) LIKE ? OR UPPER(f2) LIKE ?) AND (UPPER(f1) LIKE ? OR UPPER(f2) LIKE ?)", "%Q1%", "%Q1%", "%Q2%", "%Q2%"]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "with complex conditions" do
|
36
42
|
it "should return an AR array with an entry for each search field" do
|
37
43
|
send(:_where_conditions, "query", [%w(foo bar)]).should == ["((UPPER(foo) LIKE ? AND UPPER(bar) LIKE ?))", "%QUERY%", "%QUERY%"]
|
38
44
|
end
|
@@ -52,6 +58,11 @@ describe DataTable do
|
|
52
58
|
it "should ignore a split query if the query isn't the size of the split fields" do
|
53
59
|
send(:_where_conditions, "query", ['foz', ['foo', 'bar', {:split => '-'}]]).should == ["(UPPER(foz) LIKE ?)", "%QUERY%"]
|
54
60
|
end
|
61
|
+
|
62
|
+
it "should still work with multiple terms" do
|
63
|
+
send(:_where_conditions, "q1 q-2", ['F1', ['P1', 'P2', {:split => '-'}]]).should ==
|
64
|
+
["(UPPER(F1) LIKE ?) AND (UPPER(F1) LIKE ? OR (UPPER(P1) LIKE ? AND UPPER(P2) LIKE ?))", "%Q1%", "%Q-2%", "%Q%", "%2%"]
|
65
|
+
end
|
55
66
|
end
|
56
67
|
end
|
57
68
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: data_table
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jason Dew
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-09-03 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|