ddr-models 2.4.0.rc5 → 2.4.0.rc6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ddr-models.gemspec +1 -0
- data/lib/ddr/index.rb +2 -0
- data/lib/ddr/index/abstract_query_result.rb +1 -1
- data/lib/ddr/index/csv_options.rb +14 -0
- data/lib/ddr/index/csv_query_result.rb +39 -32
- data/lib/ddr/index/field_attribute.rb +5 -1
- data/lib/ddr/index/filter.rb +11 -1
- data/lib/ddr/index/query.rb +12 -0
- data/lib/ddr/index/query_builder.rb +17 -7
- data/lib/ddr/index/query_clause.rb +5 -4
- data/lib/ddr/index/solr_csv_options.rb +18 -0
- data/lib/ddr/models/version.rb +1 -1
- data/spec/index/filter_spec.rb +29 -2
- data/spec/index/query_clause_spec.rb +5 -1
- data/spec/index/query_spec.rb +41 -19
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41cc8abee7e422452e72bf103a639f2fd8c9b12f
|
4
|
+
data.tar.gz: 2500d3facc196eeeb47deb8a31f01bc89c4d9b97
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d1a0070f6099ca82a7f134eef231dfa14226c0829d076f70baa6505ef380d1381da691fcedc6bba135eff0a8007071ae4870cfc5d084af700105d1b29617701
|
7
|
+
data.tar.gz: 95f8776c042c8612a2ab9bac5268daed97b80498c69cfbf4bfaffe90e36989b38b91d54e784b13667e24a21093b3fc1515984c9cd76a6837c953a362c295414a
|
data/ddr-models.gemspec
CHANGED
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
|
|
33
33
|
s.add_dependency "cancancan", "~> 1.12"
|
34
34
|
s.add_dependency "ddr-antivirus", "~> 2.1.1"
|
35
35
|
s.add_dependency "virtus", "~> 1.0.5"
|
36
|
+
s.add_dependency "hashie", "~> 3.4.3"
|
36
37
|
|
37
38
|
s.add_development_dependency "bundler", "~> 1.11"
|
38
39
|
s.add_development_dependency "rake"
|
data/lib/ddr/index.rb
CHANGED
@@ -4,6 +4,7 @@ module Ddr
|
|
4
4
|
|
5
5
|
autoload :AbstractQueryResult
|
6
6
|
autoload :Connection
|
7
|
+
autoload :CSVOptions
|
7
8
|
autoload :CSVQueryResult
|
8
9
|
autoload :DocumentBuilder
|
9
10
|
autoload :Field
|
@@ -18,6 +19,7 @@ module Ddr
|
|
18
19
|
autoload :QueryParams
|
19
20
|
autoload :QueryResult
|
20
21
|
autoload :Response
|
22
|
+
autoload :SolrCSVOptions
|
21
23
|
autoload :SortOrder
|
22
24
|
autoload :UniqueKeyField
|
23
25
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require "csv"
|
2
|
+
require "hashie"
|
3
|
+
|
4
|
+
module Ddr::Index
|
5
|
+
class CSVOptions < Hashie::Dash
|
6
|
+
|
7
|
+
property :headers, default: CSV::DEFAULT_OPTIONS[:headers]
|
8
|
+
property :return_headers, default: true
|
9
|
+
property :write_headers, default: true
|
10
|
+
property :col_sep, default: CSV::DEFAULT_OPTIONS[:col_sep]
|
11
|
+
property :quote_char, default: CSV::DEFAULT_OPTIONS[:quote_char]
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
@@ -4,57 +4,64 @@ module Ddr::Index
|
|
4
4
|
class CSVQueryResult < AbstractQueryResult
|
5
5
|
|
6
6
|
MAX_ROWS = 10**8
|
7
|
+
MV_SEP = ";"
|
7
8
|
|
8
|
-
|
9
|
-
QUOTE_CHAR = CSV::DEFAULT_OPTIONS[:quote_char].freeze
|
9
|
+
attr_reader :mv_sep
|
10
10
|
|
11
|
-
|
12
|
-
"csv.header" => "false",
|
13
|
-
"csv.mv.separator" => ";",
|
14
|
-
"wt" => "csv",
|
15
|
-
}.freeze
|
11
|
+
delegate :read, :each, to: :csv
|
16
12
|
|
17
|
-
|
18
|
-
return_headers: true,
|
19
|
-
write_headers: true,
|
20
|
-
}.freeze
|
21
|
-
|
22
|
-
attr_reader :csv_opts, :solr_csv_opts
|
23
|
-
|
24
|
-
def initialize(query, **opts)
|
13
|
+
def initialize(query, mv_sep: MV_SEP)
|
25
14
|
super(query)
|
15
|
+
@mv_sep = mv_sep
|
16
|
+
end
|
17
|
+
|
18
|
+
def csv
|
19
|
+
CSV.new(data, csv_opts.to_h)
|
20
|
+
end
|
26
21
|
|
27
|
-
|
28
|
-
|
22
|
+
def to_s
|
23
|
+
read.to_csv
|
24
|
+
end
|
29
25
|
|
30
|
-
|
31
|
-
|
26
|
+
def rows
|
27
|
+
query.rows || MAX_ROWS
|
28
|
+
end
|
32
29
|
|
33
|
-
|
34
|
-
@csv_opts
|
35
|
-
@csv_opts[:quote_char] = @solr_csv_opts["csv.encapsulator"] = opts.fetch(:quote_char, QUOTE_CHAR)
|
30
|
+
def csv_opts
|
31
|
+
@csv_opts ||= CSVOptions.new(headers: csv_headers)
|
36
32
|
end
|
37
33
|
|
38
|
-
def
|
39
|
-
|
34
|
+
def solr_csv_opts
|
35
|
+
@solr_csv_opts ||= SolrCSVOptions.new(col_sep: csv_opts.col_sep,
|
36
|
+
quote_char: csv_opts.quote_char,
|
37
|
+
header: solr_csv_header,
|
38
|
+
mv_sep: mv_sep,
|
39
|
+
rows: rows)
|
40
40
|
end
|
41
41
|
|
42
|
-
def
|
43
|
-
|
42
|
+
def headers
|
43
|
+
@headers ||= query.fields.map(&:heading)
|
44
44
|
end
|
45
45
|
|
46
|
-
def
|
47
|
-
|
46
|
+
def csv_headers
|
47
|
+
if headers.empty?
|
48
|
+
:first_row
|
49
|
+
else
|
50
|
+
headers
|
51
|
+
end
|
48
52
|
end
|
49
53
|
|
50
|
-
|
54
|
+
def solr_csv_header
|
55
|
+
csv_headers == :first_row
|
56
|
+
end
|
51
57
|
|
52
|
-
def
|
53
|
-
params.merge
|
58
|
+
def solr_csv_params
|
59
|
+
params.merge solr_csv_opts.params
|
54
60
|
end
|
55
61
|
|
56
62
|
def data
|
57
|
-
conn.get
|
63
|
+
raw = conn.get("select", params: solr_csv_params)
|
64
|
+
raw.gsub(/\\#{mv_sep}/, mv_sep)
|
58
65
|
end
|
59
66
|
|
60
67
|
end
|
@@ -3,7 +3,7 @@ require "virtus"
|
|
3
3
|
module Ddr::Index
|
4
4
|
class FieldAttribute < Virtus::Attribute
|
5
5
|
|
6
|
-
def coerce(value)
|
6
|
+
def self.coerce(value)
|
7
7
|
case value
|
8
8
|
when Field
|
9
9
|
value
|
@@ -14,5 +14,9 @@ module Ddr::Index
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
+
def coerce(value)
|
18
|
+
self.class.coerce(value)
|
19
|
+
end
|
20
|
+
|
17
21
|
end
|
18
22
|
end
|
data/lib/ddr/index/filter.rb
CHANGED
@@ -27,6 +27,12 @@ module Ddr::Index
|
|
27
27
|
self
|
28
28
|
end
|
29
29
|
|
30
|
+
def where_not(conditions)
|
31
|
+
self.clauses += conditions.map do |field, v|
|
32
|
+
Array(v).map { |value| QueryClause.negative(field, value) }
|
33
|
+
end.flatten
|
34
|
+
end
|
35
|
+
|
30
36
|
def absent(field)
|
31
37
|
self.clauses << QueryClause.absent(field)
|
32
38
|
self
|
@@ -59,7 +65,7 @@ module Ddr::Index
|
|
59
65
|
delegate Api.public_instance_methods => :new_filter
|
60
66
|
|
61
67
|
def has_content
|
62
|
-
|
68
|
+
model "Component", "Attachment", "Target"
|
63
69
|
end
|
64
70
|
|
65
71
|
def is_governed_by(object_or_id)
|
@@ -70,6 +76,10 @@ module Ddr::Index
|
|
70
76
|
term is_member_of_collection: internal_uri(object_or_id)
|
71
77
|
end
|
72
78
|
|
79
|
+
def model(*models)
|
80
|
+
where active_fedora_model: models
|
81
|
+
end
|
82
|
+
|
73
83
|
private
|
74
84
|
|
75
85
|
def internal_uri(object_or_id)
|
data/lib/ddr/index/query.rb
CHANGED
@@ -15,6 +15,13 @@ module Ddr::Index
|
|
15
15
|
delegate [:count, :docs, :pids, :each_pid, :all] => :result
|
16
16
|
delegate :params => :query_params
|
17
17
|
|
18
|
+
def initialize(**args, &block)
|
19
|
+
super(**args)
|
20
|
+
if block_given?
|
21
|
+
build(&block)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
18
25
|
def inspect
|
19
26
|
"#<#{self.class.name} q=#{q.inspect}, filters=#{filters.inspect}," \
|
20
27
|
" sort=#{sort.inspect}, rows=#{rows.inspect}, fields=#{fields.inspect}>"
|
@@ -40,5 +47,10 @@ module Ddr::Index
|
|
40
47
|
QueryParams.new(self)
|
41
48
|
end
|
42
49
|
|
50
|
+
def build(&block)
|
51
|
+
QueryBuilder.new(self, &block)
|
52
|
+
self
|
53
|
+
end
|
54
|
+
|
43
55
|
end
|
44
56
|
end
|
@@ -12,6 +12,7 @@ module Ddr::Index
|
|
12
12
|
#
|
13
13
|
# asc [field], ...
|
14
14
|
# Adds ascending orderings by the fields specified.
|
15
|
+
#
|
15
16
|
# See also: desc, order_by
|
16
17
|
#
|
17
18
|
# before [field], [date_time]
|
@@ -20,10 +21,11 @@ module Ddr::Index
|
|
20
21
|
#
|
21
22
|
# before_days [field], [int]
|
22
23
|
# Adds a filter selecting documents where the field has a date/time the
|
23
|
-
#
|
24
|
+
# specified number of days before today (now) or earlier.
|
24
25
|
#
|
25
26
|
# desc [field], ...
|
26
27
|
# Adds descending orderings by the fields specified.
|
28
|
+
#
|
27
29
|
# See also: asc, order_by
|
28
30
|
#
|
29
31
|
# id [doc_id]
|
@@ -31,6 +33,7 @@ module Ddr::Index
|
|
31
33
|
#
|
32
34
|
# filter [filter1], ...
|
33
35
|
# Adds filters to the query.
|
36
|
+
#
|
34
37
|
# Aliased as: filters
|
35
38
|
#
|
36
39
|
# filters [filter], ...
|
@@ -38,7 +41,8 @@ module Ddr::Index
|
|
38
41
|
#
|
39
42
|
# field [field1], ...
|
40
43
|
# Adds fields to result documents.
|
41
|
-
#
|
44
|
+
# Note that all fields are returned when none is specified.
|
45
|
+
#
|
42
46
|
# Aliased as: fields
|
43
47
|
#
|
44
48
|
# fields [field], ...
|
@@ -46,13 +50,19 @@ module Ddr::Index
|
|
46
50
|
#
|
47
51
|
# limit [int]
|
48
52
|
# Limits the number of documents returned by the query.
|
53
|
+
#
|
49
54
|
# Aliased as: rows
|
50
55
|
#
|
56
|
+
# model [model_name], ...
|
57
|
+
# Adds a filter selecting document where ActiveFedora model equals value
|
58
|
+
# or one of the values.
|
59
|
+
#
|
51
60
|
# negative [field], [value]
|
52
61
|
# Adds a filter selecting document where field does not have the value.
|
53
62
|
#
|
54
63
|
# order_by [{field => order, ...}], ...
|
55
64
|
# Adds ordering(s) to the query.
|
65
|
+
#
|
56
66
|
# Aliased as: sort
|
57
67
|
#
|
58
68
|
# present [field]
|
@@ -75,8 +85,8 @@ module Ddr::Index
|
|
75
85
|
#
|
76
86
|
# where [{field => value, ...}]
|
77
87
|
# Adds a filter of "standard" query clauses.
|
78
|
-
#
|
79
|
-
#
|
88
|
+
# Values will be escaped when the filter is serialized.
|
89
|
+
# If a hash value is an array, that query clause will select documents
|
80
90
|
# where the field matches any array entry.
|
81
91
|
#
|
82
92
|
class QueryBuilder
|
@@ -95,8 +105,8 @@ module Ddr::Index
|
|
95
105
|
|
96
106
|
attr_reader :query
|
97
107
|
|
98
|
-
def initialize(&block)
|
99
|
-
@query = Query.new
|
108
|
+
def initialize(query = nil, &block)
|
109
|
+
@query = query || Query.new
|
100
110
|
if block_given?
|
101
111
|
instance_eval &block
|
102
112
|
end
|
@@ -120,7 +130,7 @@ module Ddr::Index
|
|
120
130
|
# @param fields [Array<Field>]
|
121
131
|
# @return [QueryBuilder] self
|
122
132
|
def field(*fields)
|
123
|
-
query.fields += fields
|
133
|
+
query.fields += fields.flatten.map { |f| FieldAttribute.coerce(f) }
|
124
134
|
self
|
125
135
|
end
|
126
136
|
alias_method :fields, :field
|
@@ -46,10 +46,11 @@ module Ddr::Index
|
|
46
46
|
alias_method :id, :unique_key
|
47
47
|
|
48
48
|
def where(field, value)
|
49
|
-
|
50
|
-
|
49
|
+
values = Array(value)
|
50
|
+
if values.size > 1
|
51
|
+
disjunction(field, values)
|
51
52
|
else
|
52
|
-
new(field: field, value:
|
53
|
+
new(field: field, value: values.first, quote_value: true)
|
53
54
|
end
|
54
55
|
end
|
55
56
|
|
@@ -65,7 +66,7 @@ module Ddr::Index
|
|
65
66
|
|
66
67
|
# Builds a query clause to filter where field is NOT present (no values)
|
67
68
|
def absent(field)
|
68
|
-
new(field:
|
69
|
+
new(field: field, value: ANY_VALUE, template: NEGATIVE_QUERY)
|
69
70
|
end
|
70
71
|
|
71
72
|
# Builds a query clause to filter where field contains at least one of a set of values.
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "hashie"
|
2
|
+
|
3
|
+
module Ddr::Index
|
4
|
+
class SolrCSVOptions < Hashie::Trash
|
5
|
+
|
6
|
+
property "csv.header", from: :header, default: false
|
7
|
+
property "csv.separator", from: :col_sep, default: ","
|
8
|
+
property "csv.encapsulator", from: :quote_char, default: '"'
|
9
|
+
property "csv.mv.separator", from: :mv_sep, default: ","
|
10
|
+
property :wt, default: "csv"
|
11
|
+
property :rows
|
12
|
+
|
13
|
+
def params
|
14
|
+
to_h.reject { |k, v| v.nil? }
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
data/lib/ddr/models/version.rb
CHANGED
data/spec/index/filter_spec.rb
CHANGED
@@ -54,7 +54,23 @@ module Ddr::Index
|
|
54
54
|
end
|
55
55
|
describe ".has_content" do
|
56
56
|
subject { described_class.has_content }
|
57
|
-
its(:clauses) {
|
57
|
+
its(:clauses) {
|
58
|
+
are_expected.to eq([QueryClause.where(:active_fedora_model, ["Component", "Attachment", "Target"])])
|
59
|
+
}
|
60
|
+
end
|
61
|
+
describe ".model" do
|
62
|
+
describe "with a single model" do
|
63
|
+
subject { described_class.model("Component") }
|
64
|
+
its(:clauses) {
|
65
|
+
are_expected.to eq([QueryClause.where(:active_fedora_model, "Component")])
|
66
|
+
}
|
67
|
+
end
|
68
|
+
describe "with a list of models" do
|
69
|
+
subject { described_class.model("Component", "Attachment", "Target") }
|
70
|
+
its(:clauses) {
|
71
|
+
are_expected.to eq([QueryClause.where(:active_fedora_model, ["Component", "Attachment", "Target"])])
|
72
|
+
}
|
73
|
+
end
|
58
74
|
end
|
59
75
|
describe ".where" do
|
60
76
|
subject { described_class.where("foo"=>"bar", "spam"=>"eggs", "stuff"=>["dog", "cat", "bird"]) }
|
@@ -95,7 +111,7 @@ module Ddr::Index
|
|
95
111
|
|
96
112
|
describe "API methods" do
|
97
113
|
describe "#where" do
|
98
|
-
it "adds
|
114
|
+
it "adds query clauses for the hash of conditions" do
|
99
115
|
subject.where("foo"=>"bar", "spam"=>"eggs", "stuff"=>["dog", "cat", "bird"])
|
100
116
|
expect(subject.clauses).to eq([QueryClause.where("foo", "bar"),
|
101
117
|
QueryClause.where("spam", "eggs"),
|
@@ -103,6 +119,17 @@ module Ddr::Index
|
|
103
119
|
])
|
104
120
|
end
|
105
121
|
end
|
122
|
+
describe "#where_not" do
|
123
|
+
it "adds negative query clauses for the hash of conditions" do
|
124
|
+
subject.where_not("foo"=>"bar", "spam"=>"eggs", "stuff"=>["dog", "cat", "bird"])
|
125
|
+
expect(subject.clauses).to eq([QueryClause.negative("foo", "bar"),
|
126
|
+
QueryClause.negative("spam", "eggs"),
|
127
|
+
QueryClause.negative("stuff", "dog"),
|
128
|
+
QueryClause.negative("stuff", "cat"),
|
129
|
+
QueryClause.negative("stuff", "bird")
|
130
|
+
])
|
131
|
+
end
|
132
|
+
end
|
106
133
|
describe "#raw" do
|
107
134
|
it "adds the query clauses w/o escaping" do
|
108
135
|
subject.raw("foo:bar", "spam:eggs")
|
@@ -43,7 +43,11 @@ module Ddr::Index
|
|
43
43
|
subject { described_class.where("foo", "Jungle Fever") }
|
44
44
|
its(:to_s) { is_expected.to eq "foo:\"Jungle Fever\"" }
|
45
45
|
end
|
46
|
-
describe "when the value is an
|
46
|
+
describe "when the value is an Array with one entry" do
|
47
|
+
subject { described_class.where("foo", ["Jungle Fever"]) }
|
48
|
+
its(:to_s) { is_expected.to eq "foo:\"Jungle Fever\"" }
|
49
|
+
end
|
50
|
+
describe "when the value is an array with multiple entries" do
|
47
51
|
subject { described_class.where("foo", ["Jungle Fever", "bar"]) }
|
48
52
|
its(:to_s) { is_expected.to eq "{!lucene q.op=OR df=foo}\"Jungle Fever\" bar" }
|
49
53
|
end
|
data/spec/index/query_spec.rb
CHANGED
@@ -1,26 +1,48 @@
|
|
1
1
|
module Ddr::Index
|
2
2
|
RSpec.describe Query do
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
describe "initialized with attributes" do
|
5
|
+
let(:id) { UniqueKeyField.instance }
|
6
|
+
let(:foo) { Field.new("foo") }
|
7
|
+
let(:spam) { Field.new("spam") }
|
8
|
+
let(:filter) { Filter.where(spam=>"eggs") }
|
9
|
+
let(:sort_order) { SortOrder.new(field: foo, order: "asc") }
|
10
|
+
let(:fields) { [id, foo, spam] }
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
subject {
|
13
|
+
described_class.new(q: "foo:bar",
|
14
|
+
filters: [filter],
|
15
|
+
fields: fields,
|
16
|
+
sort: sort_order,
|
17
|
+
rows: 50)
|
18
|
+
}
|
19
|
+
|
20
|
+
its(:to_s) {
|
21
|
+
is_expected.to eq "q=foo%3Abar&fq=spam%3Aeggs&fl=id%2Cfoo%2Cspam&sort=foo+asc&rows=50"
|
22
|
+
}
|
23
|
+
its(:params) {
|
24
|
+
is_expected.to eq({q: "foo:bar", fl: "id,foo,spam", fq: ["spam:eggs"], sort: "foo asc", rows: 50})
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "initialized with a block" do
|
29
|
+
subject {
|
30
|
+
described_class.new do
|
31
|
+
q "foo:bar"
|
32
|
+
where "spam"=>"eggs"
|
33
|
+
fields :id, "foo", "spam"
|
34
|
+
asc "foo"
|
35
|
+
limit 50
|
36
|
+
end
|
37
|
+
}
|
38
|
+
|
39
|
+
its(:to_s) {
|
40
|
+
is_expected.to eq "q=foo%3Abar&fq=spam%3Aeggs&fl=id%2Cfoo%2Cspam&sort=foo+asc&rows=50"
|
41
|
+
}
|
42
|
+
its(:params) {
|
43
|
+
is_expected.to eq({q: "foo:bar", fl: "id,foo,spam", fq: ["spam:eggs"], sort: "foo asc", rows: 50})
|
44
|
+
}
|
45
|
+
end
|
18
46
|
|
19
|
-
its(:to_s) {
|
20
|
-
is_expected.to eq "q=foo%3Abar&fq=spam%3Aeggs&fl=id%2Cfoo%2Cspam&sort=foo+asc&rows=50"
|
21
|
-
}
|
22
|
-
its(:params) {
|
23
|
-
is_expected.to eq({q: "foo:bar", fl: "id,foo,spam", fq: ["spam:eggs"], sort: "foo asc", rows: 50})
|
24
|
-
}
|
25
47
|
end
|
26
48
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddr-models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.0.
|
4
|
+
version: 2.4.0.rc6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Coble
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-01-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -227,6 +227,20 @@ dependencies:
|
|
227
227
|
- - "~>"
|
228
228
|
- !ruby/object:Gem::Version
|
229
229
|
version: 1.0.5
|
230
|
+
- !ruby/object:Gem::Dependency
|
231
|
+
name: hashie
|
232
|
+
requirement: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - "~>"
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: 3.4.3
|
237
|
+
type: :runtime
|
238
|
+
prerelease: false
|
239
|
+
version_requirements: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - "~>"
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: 3.4.3
|
230
244
|
- !ruby/object:Gem::Dependency
|
231
245
|
name: bundler
|
232
246
|
requirement: !ruby/object:Gem::Requirement
|
@@ -463,6 +477,7 @@ files:
|
|
463
477
|
- lib/ddr/index.rb
|
464
478
|
- lib/ddr/index/abstract_query_result.rb
|
465
479
|
- lib/ddr/index/connection.rb
|
480
|
+
- lib/ddr/index/csv_options.rb
|
466
481
|
- lib/ddr/index/csv_query_result.rb
|
467
482
|
- lib/ddr/index/document_builder.rb
|
468
483
|
- lib/ddr/index/field.rb
|
@@ -477,6 +492,7 @@ files:
|
|
477
492
|
- lib/ddr/index/query_params.rb
|
478
493
|
- lib/ddr/index/query_result.rb
|
479
494
|
- lib/ddr/index/response.rb
|
495
|
+
- lib/ddr/index/solr_csv_options.rb
|
480
496
|
- lib/ddr/index/sort_order.rb
|
481
497
|
- lib/ddr/index/unique_key_field.rb
|
482
498
|
- lib/ddr/jobs.rb
|