valkyrie 2.0.2 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +0 -24
- data/Appraisals +0 -4
- data/CHANGELOG.md +65 -0
- data/README.md +2 -2
- data/db/schema.rb +0 -40
- data/gemfiles/activerecord_5_2.gemfile +2 -0
- data/gemfiles/activerecord_6_0.gemfile +2 -0
- data/lib/valkyrie.rb +20 -2
- data/lib/valkyrie/id.rb +16 -1
- data/lib/valkyrie/logging.rb +72 -0
- data/lib/valkyrie/persistence/composite_persister.rb +1 -1
- data/lib/valkyrie/persistence/fedora.rb +2 -0
- data/lib/valkyrie/persistence/fedora/list_node.rb +3 -6
- data/lib/valkyrie/persistence/fedora/metadata_adapter.rb +2 -2
- data/lib/valkyrie/persistence/fedora/permissive_schema.rb +2 -2
- data/lib/valkyrie/persistence/fedora/persister.rb +2 -1
- data/lib/valkyrie/persistence/fedora/query_service.rb +20 -17
- data/lib/valkyrie/persistence/memory/query_service.rb +32 -10
- data/lib/valkyrie/persistence/postgres/query_service.rb +66 -13
- data/lib/valkyrie/persistence/solr/persister.rb +4 -17
- data/lib/valkyrie/persistence/solr/queries/find_all_query.rb +6 -0
- data/lib/valkyrie/persistence/solr/query_service.rb +33 -44
- data/lib/valkyrie/persistence/solr/repository.rb +2 -1
- data/lib/valkyrie/rdf_patches.rb +2 -2
- data/lib/valkyrie/resource.rb +10 -2
- data/lib/valkyrie/specs/shared_specs/persister.rb +3 -3
- data/lib/valkyrie/specs/shared_specs/queries.rb +112 -9
- data/lib/valkyrie/storage/fedora.rb +1 -1
- data/lib/valkyrie/storage_adapter.rb +5 -2
- data/lib/valkyrie/types.rb +2 -0
- data/lib/valkyrie/version.rb +1 -1
- data/solr/config/solrconfig.xml +0 -10
- data/valkyrie.gemspec +1 -0
- metadata +17 -4
- data/db/seeds.rb +0 -8
- data/gemfiles/activerecord_5_1.gemfile +0 -10
@@ -62,8 +62,9 @@ module Valkyrie::Persistence::Solr
|
|
62
62
|
# Given a new Valkyrie Resource, generate a random UUID and assign it to the Resource
|
63
63
|
# @param [Valkyrie::Resource] resource
|
64
64
|
# @param [String] the UUID for the new resource
|
65
|
+
# @see Valkyrie::Logging for details concerning log suppression.
|
65
66
|
def generate_id(resource)
|
66
|
-
Valkyrie.logger.warn
|
67
|
+
Valkyrie.logger.warn("The Solr adapter is not meant to persist new resources, but is now generating an ID.", logging_context: "Valkyrie::Persistence::Solr::Repository#generate_id")
|
67
68
|
resource.id = SecureRandom.uuid
|
68
69
|
end
|
69
70
|
|
data/lib/valkyrie/rdf_patches.rb
CHANGED
@@ -6,12 +6,12 @@
|
|
6
6
|
module RDF
|
7
7
|
class Literal
|
8
8
|
def as_json(*_args)
|
9
|
-
JSON::LD::API.fromRdf([RDF::Statement.new(RDF::URI(""), RDF::URI(""), self)])[0][""][0]
|
9
|
+
::JSON::LD::API.fromRdf([RDF::Statement.new(RDF::URI(""), RDF::URI(""), self)])[0][""][0]
|
10
10
|
end
|
11
11
|
end
|
12
12
|
class URI
|
13
13
|
def as_json(*_args)
|
14
|
-
JSON::LD::API.fromRdf([RDF::Statement.new(RDF::URI(""), RDF::URI(""), self)])[0][""][0]
|
14
|
+
::JSON::LD::API.fromRdf([RDF::Statement.new(RDF::URI(""), RDF::URI(""), self)])[0][""][0]
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
data/lib/valkyrie/resource.rb
CHANGED
@@ -50,7 +50,6 @@ module Valkyrie
|
|
50
50
|
attribute_names.include?(name.to_sym) &&
|
51
51
|
!internal
|
52
52
|
|
53
|
-
type = type.meta(ordered: true) if name == :member_ids
|
54
53
|
super(name, type)
|
55
54
|
end
|
56
55
|
|
@@ -58,9 +57,14 @@ module Valkyrie
|
|
58
57
|
# @return [Dry::Struct]
|
59
58
|
# @raise [RepeatedAttributeError] when trying to define attribute with the
|
60
59
|
# same name as previously defined one
|
60
|
+
# @raise [ReservedAttributeError] when trying to define an attribute
|
61
|
+
# reserved by Valkyrie
|
61
62
|
# @see #attribute
|
62
63
|
# @note extends {Dry::Struct} by adding `#attr=` style setters
|
63
64
|
def self.attributes(new_schema)
|
65
|
+
new_schema[:member_ids] = new_schema[:member_ids].meta(ordered: true) if
|
66
|
+
new_schema.key?(:member_ids)
|
67
|
+
|
64
68
|
super
|
65
69
|
|
66
70
|
new_schema.each_key do |key|
|
@@ -109,6 +113,10 @@ module Valkyrie
|
|
109
113
|
self.class.optimistic_locking_enabled?
|
110
114
|
end
|
111
115
|
|
116
|
+
def clear_optimistic_lock_token!
|
117
|
+
send("#{Valkyrie::Persistence::Attributes::OPTIMISTIC_LOCK}=", []) if optimistic_locking_enabled?
|
118
|
+
end
|
119
|
+
|
112
120
|
def attributes
|
113
121
|
Hash[self.class.attribute_names.map { |x| [x, nil] }].merge(super).freeze
|
114
122
|
end
|
@@ -183,7 +191,7 @@ module Valkyrie
|
|
183
191
|
|
184
192
|
# Returns if an attribute is set as ordered.
|
185
193
|
def ordered_attribute?(key)
|
186
|
-
self.class.schema.key(key).type.meta.try(:[], :ordered)
|
194
|
+
self.class.schema.key(key.to_sym).type.meta.try(:[], :ordered)
|
187
195
|
end
|
188
196
|
|
189
197
|
class ReservedAttributeError < StandardError; end
|
@@ -84,14 +84,14 @@ RSpec.shared_examples 'a Valkyrie::Persister' do |*flags|
|
|
84
84
|
|
85
85
|
it "can support deep nesting of resources" do
|
86
86
|
pending "No support for deep nesting." if flags.include?(:no_deep_nesting)
|
87
|
-
book = resource_class.new(title: "Sub-nested", author: [Valkyrie::ID.new("test"), RDF::Literal.new("Test", language: :fr), RDF::URI("http://
|
87
|
+
book = resource_class.new(title: "Sub-nested", author: [Valkyrie::ID.new("test"), RDF::Literal.new("Test", language: :fr), RDF::URI("http://example.com")])
|
88
88
|
book2 = resource_class.new(title: "Nested", nested_resource: book)
|
89
89
|
book3 = persister.save(resource: resource_class.new(nested_resource: book2))
|
90
90
|
|
91
91
|
reloaded = query_service.find_by(id: book3.id)
|
92
92
|
expect(reloaded.nested_resource.first.title).to eq ["Nested"]
|
93
93
|
expect(reloaded.nested_resource.first.nested_resource.first.title).to eq ["Sub-nested"]
|
94
|
-
expect(reloaded.nested_resource.first.nested_resource.first.author).to contain_exactly Valkyrie::ID.new("test"), RDF::Literal.new("Test", language: :fr), RDF::URI("http://
|
94
|
+
expect(reloaded.nested_resource.first.nested_resource.first.author).to contain_exactly Valkyrie::ID.new("test"), RDF::Literal.new("Test", language: :fr), RDF::URI("http://example.com")
|
95
95
|
end
|
96
96
|
|
97
97
|
it "stores created_at/updated_at" do
|
@@ -360,7 +360,7 @@ RSpec.shared_examples 'a Valkyrie::Persister' do |*flags|
|
|
360
360
|
resource = MyLockingResource.new(title: ["My Locked Resource"])
|
361
361
|
initial_resource = persister.save(resource: resource)
|
362
362
|
initial_token = initial_resource[Valkyrie::Persistence::Attributes::OPTIMISTIC_LOCK].first
|
363
|
-
initial_resource.
|
363
|
+
initial_resource.clear_optimistic_lock_token!
|
364
364
|
updated_resource = persister.save(resource: initial_resource)
|
365
365
|
expect(initial_token.serialize)
|
366
366
|
.not_to eq(updated_resource[Valkyrie::Persistence::Attributes::OPTIMISTIC_LOCK].first.serialize)
|
@@ -12,10 +12,15 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
12
12
|
end
|
13
13
|
class Valkyrie::Specs::SecondResource < Valkyrie::Resource
|
14
14
|
end
|
15
|
+
class Valkyrie::Specs::ThirdResource < Valkyrie::Resource
|
16
|
+
attribute :a_member_of, Valkyrie::Types::Array
|
17
|
+
attribute :an_ordered_member_of, Valkyrie::Types::Array.meta(ordered: true)
|
18
|
+
end
|
15
19
|
end
|
16
20
|
after do
|
17
21
|
Valkyrie::Specs.send(:remove_const, :CustomResource)
|
18
22
|
Valkyrie::Specs.send(:remove_const, :SecondResource)
|
23
|
+
Valkyrie::Specs.send(:remove_const, :ThirdResource)
|
19
24
|
end
|
20
25
|
let(:resource_class) { Valkyrie::Specs::CustomResource }
|
21
26
|
let(:query_service) { adapter.query_service } unless defined? query_service
|
@@ -28,10 +33,11 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
28
33
|
it { is_expected.to respond_to(:find_by_alternate_identifier).with_keywords(:alternate_identifier) }
|
29
34
|
it { is_expected.to respond_to(:find_many_by_ids).with_keywords(:ids) }
|
30
35
|
it { is_expected.to respond_to(:find_members).with_keywords(:resource, :model) }
|
31
|
-
it { is_expected.to respond_to(:find_references_by).with_keywords(:resource, :property) }
|
32
|
-
it { is_expected.to respond_to(:find_inverse_references_by).with_keywords(:resource, :property) }
|
33
|
-
it { is_expected.to respond_to(:find_inverse_references_by).with_keywords(:id, :property) }
|
36
|
+
it { is_expected.to respond_to(:find_references_by).with_keywords(:resource, :property, :model) }
|
37
|
+
it { is_expected.to respond_to(:find_inverse_references_by).with_keywords(:resource, :property, :model) }
|
38
|
+
it { is_expected.to respond_to(:find_inverse_references_by).with_keywords(:id, :property, :model) }
|
34
39
|
it { is_expected.to respond_to(:find_parents).with_keywords(:resource) }
|
40
|
+
it { is_expected.to respond_to(:count_all_of_model).with_keywords(:model) }
|
35
41
|
|
36
42
|
describe ".find_all" do
|
37
43
|
it "returns all created resources" do
|
@@ -273,14 +279,50 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
273
279
|
expect(query_service.find_references_by(resource: child, property: :an_ordered_member_of).map(&:id).to_a).to eq []
|
274
280
|
end
|
275
281
|
end
|
282
|
+
|
283
|
+
context "filtering by model" do
|
284
|
+
context "when the object has related resources that match the filter" do
|
285
|
+
subject { query_service.find_references_by(resource: child1, property: :a_member_of, model: Valkyrie::Specs::SecondResource) }
|
286
|
+
let(:child1) { persister.save(resource: Valkyrie::Specs::ThirdResource.new(a_member_of: [parent3.id, parent2.id, parent.id])) }
|
287
|
+
let(:parent) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
|
288
|
+
let(:parent2) { persister.save(resource: Valkyrie::Specs::CustomResource.new) }
|
289
|
+
let(:parent3) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
|
290
|
+
|
291
|
+
it "returns only resources with the relationship filtered to the specified model" do
|
292
|
+
expect(subject.map(&:id).to_a).to match_array [parent3.id, parent.id]
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
context "when the object has ordered related resources that match the filter" do
|
297
|
+
subject { query_service.find_references_by(resource: child1, property: :an_ordered_member_of, model: Valkyrie::Specs::SecondResource) }
|
298
|
+
let(:child1) { persister.save(resource: Valkyrie::Specs::ThirdResource.new(an_ordered_member_of: [parent.id, parent3.id, parent2.id, parent.id])) }
|
299
|
+
let(:parent) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
|
300
|
+
let(:parent2) { persister.save(resource: Valkyrie::Specs::CustomResource.new) }
|
301
|
+
let(:parent3) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
|
302
|
+
|
303
|
+
it "returns only resources with the relationship filtered to the specified model" do
|
304
|
+
expect(subject.map(&:id).to_a).to match_array [parent.id, parent3.id, parent.id]
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
308
|
+
context "when there are no related resources that match the filter" do
|
309
|
+
subject { query_service.find_references_by(resource: child1, property: :a_member_of, model: Valkyrie::Specs::SecondResource) }
|
310
|
+
let(:child1) { persister.save(resource: Valkyrie::Specs::ThirdResource.new(a_member_of: [parent.id])) }
|
311
|
+
let(:parent) { persister.save(resource: Valkyrie::Specs::CustomResource.new) }
|
312
|
+
|
313
|
+
it "returns an empty array" do
|
314
|
+
expect(subject.to_a).to eq []
|
315
|
+
end
|
316
|
+
end
|
317
|
+
end
|
276
318
|
end
|
277
319
|
|
278
320
|
describe ".find_inverse_references_by" do
|
279
321
|
context "when the resource is saved" do
|
280
322
|
context "when the property is unordered" do
|
281
323
|
it "returns everything which references the given resource by the given property" do
|
282
|
-
parent = persister.save(resource:
|
283
|
-
parent2 = persister.save(resource:
|
324
|
+
parent = persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
325
|
+
parent2 = persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
284
326
|
child = persister.save(resource: resource_class.new(a_member_of: [parent.id]))
|
285
327
|
child2 = persister.save(resource: resource_class.new(a_member_of: [parent.id, parent2.id, parent.id]))
|
286
328
|
persister.save(resource: resource_class.new)
|
@@ -290,7 +332,7 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
290
332
|
end
|
291
333
|
|
292
334
|
it "returns an empty array if there are none" do
|
293
|
-
parent = persister.save(resource:
|
335
|
+
parent = persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
294
336
|
|
295
337
|
expect(query_service.find_inverse_references_by(resource: parent, property: :a_member_of).to_a).to eq []
|
296
338
|
end
|
@@ -298,7 +340,7 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
298
340
|
|
299
341
|
context "when the property is ordered" do
|
300
342
|
it "returns everything which references the given resource by the given property" do
|
301
|
-
parent = persister.save(resource:
|
343
|
+
parent = persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
302
344
|
child = persister.save(resource: resource_class.new(an_ordered_member_of: [parent.id]))
|
303
345
|
child2 = persister.save(resource: resource_class.new(an_ordered_member_of: [parent.id, parent.id]))
|
304
346
|
persister.save(resource: resource_class.new)
|
@@ -307,12 +349,38 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
307
349
|
expect(query_service.find_inverse_references_by(resource: parent, property: :an_ordered_member_of).map(&:id).to_a).to contain_exactly child.id, child2.id
|
308
350
|
end
|
309
351
|
end
|
352
|
+
|
353
|
+
context "when the property is ordered for one child but not the other" do
|
354
|
+
before do
|
355
|
+
class Valkyrie::Specs::Parent < Valkyrie::Resource; end
|
356
|
+
class Valkyrie::Specs::ChildWithUnorderedParents < Valkyrie::Resource
|
357
|
+
attribute :a_member_of, Valkyrie::Types::Array
|
358
|
+
end
|
359
|
+
class Valkyrie::Specs::ChildWithOrderedParents < Valkyrie::Resource
|
360
|
+
attribute :a_member_of, Valkyrie::Types::Array.meta(ordered: true)
|
361
|
+
end
|
362
|
+
end
|
363
|
+
after do
|
364
|
+
Valkyrie::Specs.send(:remove_const, :Parent)
|
365
|
+
Valkyrie::Specs.send(:remove_const, :ChildWithUnorderedParents)
|
366
|
+
Valkyrie::Specs.send(:remove_const, :ChildWithOrderedParents)
|
367
|
+
end
|
368
|
+
it "returns" do
|
369
|
+
parent = persister.save(resource: Valkyrie::Specs::Parent.new)
|
370
|
+
child = persister.save(resource: Valkyrie::Specs::ChildWithUnorderedParents.new(a_member_of: [parent.id]))
|
371
|
+
child2 = persister.save(resource: Valkyrie::Specs::ChildWithOrderedParents.new(a_member_of: [parent.id, parent.id]))
|
372
|
+
persister.save(resource: Valkyrie::Specs::ChildWithUnorderedParents.new)
|
373
|
+
persister.save(resource: Valkyrie::Specs::Parent.new)
|
374
|
+
|
375
|
+
expect(query_service.find_inverse_references_by(resource: parent, property: :a_member_of).map(&:id).to_a).to contain_exactly child.id, child2.id
|
376
|
+
end
|
377
|
+
end
|
310
378
|
end
|
311
379
|
|
312
380
|
context "when id is passed instead of resource" do
|
313
381
|
it "returns everything which references the given resource by the given property" do
|
314
|
-
parent = persister.save(resource:
|
315
|
-
parent2 = persister.save(resource:
|
382
|
+
parent = persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
383
|
+
parent2 = persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
316
384
|
child = persister.save(resource: resource_class.new(a_member_of: [parent.id]))
|
317
385
|
child2 = persister.save(resource: resource_class.new(a_member_of: [parent.id, parent2.id, parent.id]))
|
318
386
|
persister.save(resource: resource_class.new)
|
@@ -335,6 +403,32 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
335
403
|
expect { query_service.find_inverse_references_by(resource: parent, property: :a_member_of).to_a }.to raise_error ArgumentError
|
336
404
|
end
|
337
405
|
end
|
406
|
+
|
407
|
+
context "filtering by model" do
|
408
|
+
subject { query_service.find_inverse_references_by(resource: parent, property: :a_member_of, model: Valkyrie::Specs::CustomResource) }
|
409
|
+
|
410
|
+
context "when the object has related resources that match the filter" do
|
411
|
+
let(:parent) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
|
412
|
+
|
413
|
+
it "returns only resources with the relationship filtered to the specified model" do
|
414
|
+
child1 = persister.save(resource: Valkyrie::Specs::CustomResource.new(a_member_of: [parent.id]))
|
415
|
+
persister.save(resource: Valkyrie::Specs::ThirdResource.new(a_member_of: [parent.id]))
|
416
|
+
child3 = persister.save(resource: Valkyrie::Specs::CustomResource.new(a_member_of: [parent.id]))
|
417
|
+
|
418
|
+
expect(subject.map(&:id).to_a).to match_array [child3.id, child1.id]
|
419
|
+
end
|
420
|
+
end
|
421
|
+
|
422
|
+
context "when there are no related resources that match the filter" do
|
423
|
+
let(:parent) { persister.save(resource: Valkyrie::Specs::SecondResource.new) }
|
424
|
+
|
425
|
+
it "returns an empty array" do
|
426
|
+
persister.save(resource: Valkyrie::Specs::ThirdResource.new(a_member_of: [parent.id]))
|
427
|
+
|
428
|
+
expect(subject.to_a).to eq []
|
429
|
+
end
|
430
|
+
end
|
431
|
+
end
|
338
432
|
end
|
339
433
|
|
340
434
|
describe ".find_parents" do
|
@@ -411,4 +505,13 @@ RSpec.shared_examples 'a Valkyrie query provider' do
|
|
411
505
|
expect(resource[Valkyrie::Persistence::Attributes::OPTIMISTIC_LOCK]).not_to be_empty
|
412
506
|
end
|
413
507
|
end
|
508
|
+
|
509
|
+
describe ".count_all_of_model" do
|
510
|
+
it "counts all of that model" do
|
511
|
+
persister.save(resource: resource_class.new)
|
512
|
+
persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
513
|
+
persister.save(resource: Valkyrie::Specs::SecondResource.new)
|
514
|
+
expect(query_service.count_all_of_model(model: Valkyrie::Specs::SecondResource)).to eq(2)
|
515
|
+
end
|
516
|
+
end
|
414
517
|
end
|
@@ -7,7 +7,7 @@ module Valkyrie::Storage
|
|
7
7
|
SLASH = '/'
|
8
8
|
|
9
9
|
# @param [Ldp::Client] connection
|
10
|
-
def initialize(connection:, base_path: "/", fedora_version:
|
10
|
+
def initialize(connection:, base_path: "/", fedora_version: Valkyrie::Persistence::Fedora::DEFAULT_FEDORA_VERSION)
|
11
11
|
@connection = connection
|
12
12
|
@base_path = base_path
|
13
13
|
@fedora_version = fedora_version
|
@@ -5,6 +5,7 @@ module Valkyrie
|
|
5
5
|
# storage backends (such as fedora, disk, etc)
|
6
6
|
class StorageAdapter
|
7
7
|
class FileNotFound < StandardError; end
|
8
|
+
class AdapterNotFoundError < StandardError; end
|
8
9
|
class_attribute :storage_adapters
|
9
10
|
self.storage_adapters = {}
|
10
11
|
class << self
|
@@ -54,10 +55,12 @@ module Valkyrie
|
|
54
55
|
# @param id [Valkyrie::ID]
|
55
56
|
# @return [Valkyrie::StorageAdapter]
|
56
57
|
def adapter_for(id:)
|
57
|
-
|
58
|
-
storage_adapters.values.find do |storage_adapter|
|
58
|
+
handler = storage_adapters.values.find do |storage_adapter|
|
59
59
|
storage_adapter.handles?(id: id)
|
60
60
|
end
|
61
|
+
|
62
|
+
raise AdapterNotFoundError, 'Unable to find a StorageAdapter' if handler.nil?
|
63
|
+
handler
|
61
64
|
end
|
62
65
|
end
|
63
66
|
|
data/lib/valkyrie/types.rb
CHANGED
@@ -99,6 +99,8 @@ module Valkyrie
|
|
99
99
|
end
|
100
100
|
Array.singleton_class.include(ArrayDefault)
|
101
101
|
Set.singleton_class.include(ArrayDefault)
|
102
|
+
Relation = Valkyrie::Types::Set.of(Valkyrie::Types::ID)
|
103
|
+
OrderedRelation = Valkyrie::Types::Array.of(Valkyrie::Types::ID).meta(ordered: true)
|
102
104
|
|
103
105
|
# Used for when an input may be an array, but the output needs to be a
|
104
106
|
# single string.
|
data/lib/valkyrie/version.rb
CHANGED
data/solr/config/solrconfig.xml
CHANGED
@@ -284,16 +284,6 @@
|
|
284
284
|
-->
|
285
285
|
</searchComponent>
|
286
286
|
|
287
|
-
<searchComponent name="suggest" class="solr.SuggestComponent">
|
288
|
-
<lst name="suggester">
|
289
|
-
<str name="name">mySuggester</str>
|
290
|
-
<str name="lookupImpl">FuzzyLookupFactory</str>
|
291
|
-
<str name="suggestAnalyzerFieldType">textSuggest</str>
|
292
|
-
<str name="buildOnCommit">true</str>
|
293
|
-
<str name="field">suggest</str>
|
294
|
-
</lst>
|
295
|
-
</searchComponent>
|
296
|
-
|
297
287
|
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
|
298
288
|
<lst name="defaults">
|
299
289
|
<str name="suggest">true</str>
|
data/valkyrie.gemspec
CHANGED
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_dependency 'json'
|
34
34
|
spec.add_dependency 'rdf-vocab'
|
35
35
|
spec.add_dependency 'disposable', '~> 0.4.5'
|
36
|
+
spec.add_dependency 'faraday', '< 1.0'
|
36
37
|
|
37
38
|
spec.add_development_dependency "bundler", "> 1.16.0", "< 3"
|
38
39
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: valkyrie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Trey Pendragon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-struct
|
@@ -192,6 +192,20 @@ dependencies:
|
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: 0.4.5
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: faraday
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "<"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '1.0'
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "<"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '1.0'
|
195
209
|
- !ruby/object:Gem::Dependency
|
196
210
|
name: bundler
|
197
211
|
requirement: !ruby/object:Gem::Requirement
|
@@ -449,8 +463,6 @@ files:
|
|
449
463
|
- db/migrate/20180212092225_create_updated_at_index.rb
|
450
464
|
- db/migrate/20180802220739_add_optimistic_locking_to_orm_resources.rb
|
451
465
|
- db/schema.rb
|
452
|
-
- db/seeds.rb
|
453
|
-
- gemfiles/activerecord_5_1.gemfile
|
454
466
|
- gemfiles/activerecord_5_2.gemfile
|
455
467
|
- gemfiles/activerecord_6_0.gemfile
|
456
468
|
- lib/config/database_connection.rb
|
@@ -463,6 +475,7 @@ files:
|
|
463
475
|
- lib/valkyrie/engine.rb
|
464
476
|
- lib/valkyrie/id.rb
|
465
477
|
- lib/valkyrie/indexers/access_controls_indexer.rb
|
478
|
+
- lib/valkyrie/logging.rb
|
466
479
|
- lib/valkyrie/metadata_adapter.rb
|
467
480
|
- lib/valkyrie/persistence.rb
|
468
481
|
- lib/valkyrie/persistence/buffered_persister.rb
|
data/db/seeds.rb
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# This file should contain all the record creation needed to seed the database with its default values.
|
3
|
-
# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
|
4
|
-
#
|
5
|
-
# Examples:
|
6
|
-
#
|
7
|
-
# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
|
8
|
-
# Character.create(name: 'Luke', movie: movies.first)
|