linked_rails 0.0.1 → 0.0.4.pre.g1faca9643
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/LICENSE +21 -674
- data/app/controllers/linked_rails/actions/objects_controller.rb +9 -0
- data/app/controllers/linked_rails/bulk_controller.rb +105 -22
- data/app/controllers/linked_rails/enum_values_controller.rb +0 -42
- data/app/models/linked_rails/actions/item.rb +64 -55
- data/app/models/linked_rails/actions/list.rb +6 -31
- data/app/models/linked_rails/actions/object.rb +38 -0
- data/app/models/linked_rails/collection/configuration.rb +55 -0
- data/app/models/linked_rails/collection/filter.rb +1 -1
- data/app/models/linked_rails/collection/filter_field.rb +19 -2
- data/app/models/linked_rails/collection/filter_option.rb +1 -1
- data/app/models/linked_rails/collection/filterable.rb +6 -9
- data/app/models/linked_rails/collection/infinite.rb +113 -0
- data/app/models/linked_rails/collection/infinite_view.rb +1 -90
- data/app/models/linked_rails/collection/iri.rb +47 -43
- data/app/models/linked_rails/collection/iri_mapping.rb +15 -7
- data/app/models/linked_rails/collection/paginated.rb +46 -0
- data/app/models/linked_rails/collection/paginated_view.rb +1 -33
- data/app/models/linked_rails/collection/sortable.rb +1 -9
- data/app/models/linked_rails/collection/sorting.rb +1 -1
- data/app/models/linked_rails/collection/view.rb +51 -14
- data/app/models/linked_rails/collection.rb +53 -85
- data/app/models/linked_rails/creative_work.rb +1 -1
- data/app/models/linked_rails/entry_point.rb +8 -5
- data/app/models/linked_rails/enum_value.rb +40 -2
- data/app/models/linked_rails/form/field/association_input.rb +7 -1
- data/app/models/linked_rails/form/field/file_input.rb +1 -0
- data/app/models/linked_rails/form/field/resource_field.rb +2 -0
- data/{lib/linked_rails/enhancements/indexable/model.rb → app/models/linked_rails/form/field/url_input.rb} +3 -3
- data/app/models/linked_rails/form/field.rb +37 -13
- data/app/models/linked_rails/form/field_factory.rb +48 -18
- data/app/models/linked_rails/form/group.rb +4 -6
- data/app/models/linked_rails/form/page.rb +8 -4
- data/app/models/linked_rails/form.rb +17 -21
- data/app/models/linked_rails/manifest.rb +102 -22
- data/app/models/linked_rails/menus/item.rb +10 -13
- data/app/models/linked_rails/menus/list.rb +16 -7
- data/app/models/linked_rails/ontology/base.rb +3 -1
- data/app/models/linked_rails/ontology/class.rb +3 -3
- data/app/models/linked_rails/ontology.rb +6 -5
- data/app/models/linked_rails/property_query.rb +2 -0
- data/app/models/linked_rails/sequence.rb +4 -13
- data/app/models/linked_rails/shacl/property_shape.rb +1 -1
- data/app/models/linked_rails/web_page.rb +0 -4
- data/app/models/linked_rails/web_site.rb +0 -4
- data/app/models/linked_rails/widget.rb +4 -11
- data/app/policies/linked_rails/actions/object_policy.rb +11 -0
- data/app/policies/linked_rails/collection_policy.rb +2 -2
- data/app/policies/linked_rails/form_policy.rb +13 -0
- data/app/policies/linked_rails/ontology_policy.rb +13 -0
- data/app/serializers/linked_rails/actions/item_serializer.rb +5 -5
- data/app/serializers/linked_rails/actions/object_serializer.rb +9 -0
- data/app/serializers/linked_rails/collection/filter_field_serializer.rb +3 -2
- data/app/serializers/linked_rails/collection/filter_option_serializer.rb +1 -1
- data/app/serializers/linked_rails/collection/filter_serializer.rb +1 -1
- data/app/serializers/linked_rails/collection/sorting_serializer.rb +1 -1
- data/app/serializers/linked_rails/collection/view_serializer.rb +3 -3
- data/app/serializers/linked_rails/collection_serializer.rb +8 -7
- data/app/serializers/linked_rails/condition_serializer.rb +3 -3
- data/app/serializers/linked_rails/entry_point_serializer.rb +3 -3
- data/app/serializers/linked_rails/enum_value_serializer.rb +1 -0
- data/app/serializers/linked_rails/form/field/association_input_serializer.rb +1 -0
- data/app/serializers/linked_rails/form/field/file_input_serializer.rb +11 -0
- data/app/serializers/linked_rails/form/field_serializer.rb +3 -1
- data/app/serializers/linked_rails/form/group_serializer.rb +1 -1
- data/app/serializers/linked_rails/form/page_serializer.rb +1 -1
- data/app/serializers/linked_rails/menus/item_serializer.rb +3 -3
- data/app/serializers/linked_rails/menus/list_serializer.rb +1 -1
- data/app/serializers/linked_rails/ontology_serializer.rb +2 -2
- data/app/serializers/linked_rails/property_query_serializer.rb +7 -0
- data/app/serializers/linked_rails/sequence_serializer.rb +2 -5
- data/app/serializers/linked_rails/shacl/node_shape_serializer.rb +1 -1
- data/app/serializers/linked_rails/shacl/property_shape_serializer.rb +1 -1
- data/app/serializers/linked_rails/shacl/shape_serializer.rb +5 -5
- data/app/serializers/linked_rails/web_page_serializer.rb +3 -3
- data/app/serializers/linked_rails/web_site_serializer.rb +1 -1
- data/app/serializers/linked_rails/widget_serializer.rb +3 -3
- data/app/workers/linked_rails/invalidation_stream_worker.rb +16 -0
- data/lib/generators/linked_rails/install/install_generator.rb +7 -8
- data/lib/generators/linked_rails/install/templates/README +7 -0
- data/lib/generators/linked_rails/install/templates/app_menu_list.rb +36 -7
- data/lib/generators/linked_rails/install/templates/application_menu_list.rb +40 -1
- data/lib/generators/linked_rails/install/templates/initializer.rb +1 -2
- data/lib/generators/linked_rails/install/templates/locales.yml +16 -0
- data/lib/generators/linked_rails/install/templates/rdf_serializers_initializer.rb +1 -1
- data/lib/generators/linked_rails/install/templates/vocab.rb +1 -0
- data/lib/generators/linked_rails/install/templates/vocab.yml +2 -2
- data/lib/generators/linked_rails/model/model_generator.rb +0 -1
- data/lib/generators/linked_rails/model/templates/controller.rb.tt +5 -1
- data/lib/generators/linked_rails/model/templates/form.rb.tt +3 -0
- data/lib/generators/linked_rails/model/templates/menu_list.rb.tt +15 -0
- data/lib/generators/linked_rails/model/templates/policy.rb.tt +13 -0
- data/lib/generators/linked_rails/model/templates/serializer.rb.tt +5 -1
- data/lib/linked_rails/active_response/controller/collections.rb +1 -1
- data/lib/linked_rails/active_response/controller/crud_defaults.rb +4 -4
- data/lib/linked_rails/active_response/controller/params.rb +10 -10
- data/lib/linked_rails/active_response/controller.rb +8 -18
- data/lib/linked_rails/active_response/responders/rdf.rb +19 -10
- data/lib/linked_rails/callable_variable.rb +1 -1
- data/lib/linked_rails/collection_params_parser.rb +93 -0
- data/lib/linked_rails/controller/actionable.rb +121 -0
- data/lib/linked_rails/controller/authorization.rb +6 -0
- data/lib/linked_rails/controller/default_actions/create.rb +52 -0
- data/lib/linked_rails/controller/default_actions/destroy.rb +42 -0
- data/lib/linked_rails/controller/default_actions/update.rb +43 -0
- data/lib/linked_rails/controller/delta.rb +58 -0
- data/lib/linked_rails/controller/error_handling.rb +14 -7
- data/lib/linked_rails/controller/rendering.rb +48 -0
- data/lib/linked_rails/controller.rb +24 -4
- data/lib/linked_rails/enhanceable.rb +1 -1
- data/lib/linked_rails/enhancements/creatable/controller.rb +1 -1
- data/lib/linked_rails/enhancements/destroyable/controller.rb +1 -1
- data/lib/linked_rails/enhancements/updatable/controller.rb +1 -1
- data/lib/linked_rails/enhancements.rb +0 -16
- data/lib/linked_rails/errors/forbidden.rb +37 -0
- data/lib/linked_rails/errors.rb +3 -0
- data/lib/linked_rails/helpers/delta_helper.rb +26 -57
- data/lib/linked_rails/helpers/ontola_actions_helper.rb +2 -2
- data/lib/linked_rails/helpers/resource_helper.rb +11 -2
- data/lib/linked_rails/iri_mapper.rb +17 -39
- data/lib/linked_rails/middleware/error_handling.rb +51 -0
- data/lib/linked_rails/middleware/linked_data_params.rb +30 -151
- data/lib/linked_rails/model/actionable.rb +68 -0
- data/lib/linked_rails/model/cacheable.rb +45 -0
- data/lib/linked_rails/model/collections.rb +201 -39
- data/lib/linked_rails/model/dirty.rb +6 -18
- data/lib/linked_rails/model/enhancements.rb +1 -6
- data/lib/linked_rails/model/filtering.rb +4 -6
- data/lib/linked_rails/model/indexable.rb +6 -16
- data/lib/linked_rails/model/iri.rb +29 -19
- data/lib/linked_rails/model/iri_mapping.rb +37 -8
- data/lib/linked_rails/model/menuable.rb +28 -0
- data/lib/linked_rails/model/serialization.rb +2 -15
- data/lib/linked_rails/model/singularable.rb +57 -0
- data/lib/linked_rails/model/sorting.rb +0 -5
- data/lib/linked_rails/model/tables.rb +26 -0
- data/lib/linked_rails/model.rb +18 -7
- data/lib/linked_rails/params_parser.rb +131 -54
- data/lib/linked_rails/policy/attribute_conditions.rb +2 -2
- data/lib/linked_rails/policy.rb +44 -46
- data/lib/linked_rails/railtie.rb +11 -0
- data/lib/linked_rails/rdf_error.rb +2 -2
- data/lib/linked_rails/renderers.rb +1 -0
- data/lib/linked_rails/routes.rb +38 -22
- data/lib/linked_rails/serializer/actionable.rb +27 -0
- data/lib/linked_rails/serializer/menuable.rb +31 -0
- data/lib/linked_rails/serializer/singularable.rb +26 -0
- data/lib/linked_rails/serializer.rb +28 -11
- data/lib/linked_rails/storage.rb +32 -0
- data/lib/linked_rails/test_methods.rb +114 -0
- data/lib/linked_rails/translate.rb +31 -9
- data/lib/linked_rails/types/iri_type.rb +37 -0
- data/lib/linked_rails/uri_template.rb +30 -0
- data/lib/linked_rails/url.rb +11 -0
- data/lib/linked_rails/version.rb +1 -1
- data/lib/linked_rails/vocab.rb +9 -0
- data/lib/linked_rails.rb +40 -14
- data/lib/rails/welcome_controller.rb +3 -2
- data/lib/rdf/list.rb +9 -0
- data/lib/rdf/query_fix.rb +15 -0
- metadata +80 -33
- data/app/models/linked_rails/actions/default_actions/create.rb +0 -60
- data/app/models/linked_rails/actions/default_actions/destroy.rb +0 -45
- data/app/models/linked_rails/actions/default_actions/update.rb +0 -50
- data/app/models/linked_rails/actions/default_actions.rb +0 -17
- data/lib/generators/linked_rails/install/templates/application_action_list.rb +0 -3
- data/lib/generators/linked_rails/model/templates/action_list.rb.tt +0 -6
- data/lib/linked_rails/enhancements/actionable/model.rb +0 -71
- data/lib/linked_rails/enhancements/actionable/serializer.rb +0 -25
- data/lib/linked_rails/enhancements/creatable/action.rb +0 -15
- data/lib/linked_rails/enhancements/destroyable/action.rb +0 -15
- data/lib/linked_rails/enhancements/destroyable/routing.rb +0 -19
- data/lib/linked_rails/enhancements/menuable/model.rb +0 -36
- data/lib/linked_rails/enhancements/menuable/serializer.rb +0 -33
- data/lib/linked_rails/enhancements/route_concerns.rb +0 -56
- data/lib/linked_rails/enhancements/singularable/controller.rb +0 -43
- data/lib/linked_rails/enhancements/singularable/model.rb +0 -47
- data/lib/linked_rails/enhancements/singularable/serializer.rb +0 -28
- data/lib/linked_rails/enhancements/tableable/model.rb +0 -28
- data/lib/linked_rails/enhancements/updatable/action.rb +0 -15
- data/lib/linked_rails/enhancements/updatable/routing.rb +0 -20
@@ -1,71 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LinkedRails
|
4
|
-
module Enhancements
|
5
|
-
module Actionable
|
6
|
-
module Model
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
def actions(user_context = nil)
|
10
|
-
action_list(user_context).actions
|
11
|
-
end
|
12
|
-
|
13
|
-
def action(tag, user_context = nil)
|
14
|
-
actions(user_context).find { |a| a.tag == tag }
|
15
|
-
end
|
16
|
-
|
17
|
-
def action_list(user_context)
|
18
|
-
@action_list ||= {}
|
19
|
-
@action_list[user_context] ||= self.class.action_list.new(resource: self, user_context: user_context)
|
20
|
-
end
|
21
|
-
|
22
|
-
def action_triples
|
23
|
-
@action_triples ||= triples_for_actions(actions) + triples_for_actions(collection_actions)
|
24
|
-
end
|
25
|
-
|
26
|
-
def collection_actions
|
27
|
-
(try(:collections) || []).map do |opts|
|
28
|
-
collection_for(opts[:name]).actions
|
29
|
-
end.flatten
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def triples_for_actions(actions)
|
35
|
-
actions.flat_map do |action|
|
36
|
-
triples = [
|
37
|
-
[iri, action.predicate, action.iri],
|
38
|
-
[iri, Vocab.schema.potentialAction, action.iri]
|
39
|
-
]
|
40
|
-
triples << [iri, LinkedRails::Vocab.ontola[:favoriteAction], action.iri] if action.favorite
|
41
|
-
triples
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
module ClassMethods
|
46
|
-
def action_list
|
47
|
-
return @action_list if @action_list.try(:actionable_class) == self
|
48
|
-
|
49
|
-
@action_list = defined_action_list || define_action_list
|
50
|
-
end
|
51
|
-
|
52
|
-
private
|
53
|
-
|
54
|
-
def action_superclass
|
55
|
-
superclass.try(:action_list) || LinkedRails.action_list_parent_class
|
56
|
-
end
|
57
|
-
|
58
|
-
def defined_action_list
|
59
|
-
"#{name}ActionList".safe_constantize
|
60
|
-
end
|
61
|
-
|
62
|
-
def define_action_list
|
63
|
-
list = const_set("#{name.demodulize}ActionList", Class.new(action_superclass))
|
64
|
-
list.include_enhancements(:actionable_class, :Action)
|
65
|
-
list
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LinkedRails
|
4
|
-
module Enhancements
|
5
|
-
module Actionable
|
6
|
-
module Serializer
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
included do
|
10
|
-
statements :action_triples
|
11
|
-
end
|
12
|
-
|
13
|
-
class_methods do
|
14
|
-
def action_triples(object, _params)
|
15
|
-
if object.iri.anonymous? && !object.singular_resource?
|
16
|
-
[]
|
17
|
-
else
|
18
|
-
object.action_triples
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LinkedRails
|
4
|
-
module Enhancements
|
5
|
-
module Destroyable
|
6
|
-
module Routing; end
|
7
|
-
|
8
|
-
class << self
|
9
|
-
def route_concerns(mapper)
|
10
|
-
mapper.concern :destroyable do
|
11
|
-
mapper.member do
|
12
|
-
mapper.delete '', action: :destroy
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LinkedRails
|
4
|
-
module Enhancements
|
5
|
-
module Menuable
|
6
|
-
module Model
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
def menus(user_context = nil)
|
10
|
-
menu_list(user_context).menus
|
11
|
-
end
|
12
|
-
|
13
|
-
def menu(tag, user_context = nil)
|
14
|
-
menu_list(user_context).menu(tag)
|
15
|
-
end
|
16
|
-
|
17
|
-
def menu_list(user_context = nil)
|
18
|
-
@menu_list = {}
|
19
|
-
@menu_list[user_context] ||= self.class.menu_class.new(resource: self, user_context: user_context)
|
20
|
-
end
|
21
|
-
|
22
|
-
module ClassMethods
|
23
|
-
def menu_class
|
24
|
-
@menu_class ||= "#{name}MenuList".safe_constantize || "#{superclass.name}MenuList".safe_constantize
|
25
|
-
end
|
26
|
-
|
27
|
-
def preview_includes
|
28
|
-
return super if menu_class.blank?
|
29
|
-
|
30
|
-
super + menu_class.defined_menus.keys.map { |tag| "#{tag}_menu" }
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LinkedRails
|
4
|
-
module Enhancements
|
5
|
-
module Menuable
|
6
|
-
module Serializer
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
included do
|
10
|
-
include_menus
|
11
|
-
end
|
12
|
-
|
13
|
-
module ClassMethods
|
14
|
-
def inherited(target)
|
15
|
-
super
|
16
|
-
target.include_menus
|
17
|
-
end
|
18
|
-
|
19
|
-
def include_menus
|
20
|
-
serializable_class.try(:menu_class)&.defined_menus&.keys&.each do |menu|
|
21
|
-
has_one "#{menu}_menu",
|
22
|
-
predicate: Vocab.ontola["#{menu.to_s.camelize(:lower)}Menu"],
|
23
|
-
if: method(:named_object?),
|
24
|
-
polymorphic: true do |object, opts|
|
25
|
-
object.menu(menu, opts[:scope])
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LinkedRails
|
4
|
-
module Enhancements
|
5
|
-
class RouteConcerns
|
6
|
-
cattr_accessor :enhancement_concerns, default: []
|
7
|
-
|
8
|
-
class << self
|
9
|
-
def add_concern(opts)
|
10
|
-
enhancement_concerns << opts unless enhancement_concerns.include?(opts)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
module ActionDispatch
|
18
|
-
module Routing
|
19
|
-
class Mapper
|
20
|
-
def include_route_concerns(klass: @scope[:controller].classify.constantize, only: nil, except: [])
|
21
|
-
include =
|
22
|
-
if klass.respond_to?(:each)
|
23
|
-
klass.map(&method(:route_concerns_for)).flatten.uniq
|
24
|
-
else
|
25
|
-
route_concerns_for(klass)
|
26
|
-
end
|
27
|
-
|
28
|
-
include &= only unless only.nil?
|
29
|
-
include -= except
|
30
|
-
|
31
|
-
concerns include
|
32
|
-
end
|
33
|
-
|
34
|
-
def add_missing_concern(enhancement)
|
35
|
-
return if @concerns.include?(concern_key_from_enhancement(enhancement))
|
36
|
-
|
37
|
-
module_parent_for(enhancement).route_concerns(self)
|
38
|
-
end
|
39
|
-
|
40
|
-
def concern_key_from_enhancement(enhancement)
|
41
|
-
module_parent_for(enhancement).to_s.demodulize.underscore.to_sym
|
42
|
-
end
|
43
|
-
|
44
|
-
def route_concerns_for(klass)
|
45
|
-
klass
|
46
|
-
.enhancement_modules(:Routing)
|
47
|
-
.each(&method(:add_missing_concern))
|
48
|
-
.map(&method(:concern_key_from_enhancement))
|
49
|
-
end
|
50
|
-
|
51
|
-
def module_parent_for(klass)
|
52
|
-
Rails.version < '6' ? klass.parent : klass.module_parent
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LinkedRails
|
4
|
-
module Enhancements
|
5
|
-
module Singularable
|
6
|
-
module Controller
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
private
|
10
|
-
|
11
|
-
def create_meta
|
12
|
-
data = super
|
13
|
-
data << same_as_statement
|
14
|
-
data
|
15
|
-
end
|
16
|
-
|
17
|
-
def destroy_meta
|
18
|
-
data = super
|
19
|
-
data << remove_same_as_delta
|
20
|
-
data
|
21
|
-
end
|
22
|
-
|
23
|
-
def same_as_statement
|
24
|
-
return [] unless current_resource.respond_to?(:singular_iri)
|
25
|
-
|
26
|
-
[
|
27
|
-
current_resource.singular_iri,
|
28
|
-
Vocab.owl.sameAs,
|
29
|
-
current_resource.iri
|
30
|
-
]
|
31
|
-
end
|
32
|
-
|
33
|
-
def singular_route?
|
34
|
-
params[:singular_route]
|
35
|
-
end
|
36
|
-
|
37
|
-
def remove_same_as_delta
|
38
|
-
invalidate_resource_delta(current_resource.singular_iri)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LinkedRails
|
4
|
-
module Enhancements
|
5
|
-
module Singularable
|
6
|
-
module Model
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
included do
|
10
|
-
attr_accessor :singular_resource
|
11
|
-
|
12
|
-
alias_method :singular_resource?, :singular_resource
|
13
|
-
end
|
14
|
-
|
15
|
-
def root_relative_singular_iri(opts = {})
|
16
|
-
RDF::URI(self.class.singular_iri_template.expand(singular_iri_opts.merge(opts)))
|
17
|
-
end
|
18
|
-
|
19
|
-
def root_relative_iri(opts = {})
|
20
|
-
return super unless anonymous_iri?
|
21
|
-
|
22
|
-
root_relative_singular_iri(opts)
|
23
|
-
end
|
24
|
-
|
25
|
-
def singular_iri(opts = {})
|
26
|
-
return iri_with_root(root_relative_singular_iri(opts)) if opts.present?
|
27
|
-
|
28
|
-
@singular_iri ||= iri_with_root(root_relative_singular_iri)
|
29
|
-
end
|
30
|
-
|
31
|
-
class_methods do
|
32
|
-
def requested_singular_resource(_params, _user_context)
|
33
|
-
raise(NotImplementedError)
|
34
|
-
end
|
35
|
-
|
36
|
-
def singular_iri_template
|
37
|
-
@singular_iri_template ||= URITemplate.new("{/parent_iri*}/#{singular_route_key}{#fragment}")
|
38
|
-
end
|
39
|
-
|
40
|
-
def singular_route_key
|
41
|
-
name.underscore
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LinkedRails
|
4
|
-
module Enhancements
|
5
|
-
module Singularable
|
6
|
-
module Serializer
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
included do
|
10
|
-
statements :same_as_statement
|
11
|
-
|
12
|
-
def self.same_as_statement(object, _params)
|
13
|
-
return [] unless object.singular_resource? && object.singular_iri != object.iri
|
14
|
-
|
15
|
-
[
|
16
|
-
RDF::Statement.new(
|
17
|
-
object.singular_iri,
|
18
|
-
Vocab.owl.sameAs,
|
19
|
-
object.iri,
|
20
|
-
graph_name: Vocab.ll[:supplant]
|
21
|
-
)
|
22
|
-
]
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LinkedRails
|
4
|
-
module Enhancements
|
5
|
-
module Tableable
|
6
|
-
module Model
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
included do
|
10
|
-
class_attribute :defined_columns
|
11
|
-
end
|
12
|
-
|
13
|
-
module ClassMethods
|
14
|
-
def with_columns(opts)
|
15
|
-
initialize_columns
|
16
|
-
defined_columns.merge!(opts)
|
17
|
-
end
|
18
|
-
|
19
|
-
def initialize_columns
|
20
|
-
return if defined_columns && method(:defined_columns).owner == singleton_class
|
21
|
-
|
22
|
-
self.defined_columns = superclass.try(:defined_columns)&.dup || {}
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LinkedRails
|
4
|
-
module Enhancements
|
5
|
-
module Updatable
|
6
|
-
module Routing; end
|
7
|
-
|
8
|
-
class << self
|
9
|
-
def route_concerns(mapper)
|
10
|
-
mapper.concern :updatable do
|
11
|
-
mapper.member do
|
12
|
-
mapper.patch :update
|
13
|
-
mapper.put :update
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|