valkyrie 2.0.2 → 2.1.0
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.
- 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)
|