Skip to content

Commit

Permalink
Removing ActiveFedora as a dependency
Browse files Browse the repository at this point in the history
  • Loading branch information
jrgriffiniii committed Jul 29, 2019
1 parent d3f8835 commit 032f9ea
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 2 deletions.
1 change: 0 additions & 1 deletion hydra-editor.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ Gem::Specification.new do |s|
s.files = Dir["{app,config,db,lib}/**/*"] + ["Rakefile", "README.md", "History.md"]

s.add_dependency "activerecord", "~> 5.0"
s.add_dependency "active-fedora", ">= 9.0.0"
s.add_dependency "almond-rails", '~> 0.1'
s.add_dependency "cancancan", "~> 1.8"
s.add_dependency "rails", ">= 5", "< 6"
Expand Down
55 changes: 54 additions & 1 deletion lib/hydra_editor/controller_resource.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
require 'pry-byebug'

class HydraEditor::ControllerResource < CanCan::ControllerResource
def find_resource
ActiveFedora::Base.find(id_param)
query_service.find_by(id: id_param)
end

def resource_class
Expand All @@ -15,4 +17,55 @@ def has_valid_type?
def type_param
@params[:type]
end

private

class QueryServiceAdapter
def self.adapter_class(orm_class)
module_namespace = "HydraEditor::ControllerResource"
adapter_name = "#{module_namespace}::#{orm_class.name.split("::").first}QueryAdapter"
adapter_name.constantize
end

def self.registered?(orm_class)
adapter_class(orm_class)
true
rescue NameError
false
end

def self.build(orm_class)
if registered?(orm_class)
adapter_class(orm_class).new(orm_class: orm_class)
else
self.new(orm_class: orm_class)
end
end

def initialize(orm_class:)
@orm_class = orm_class
end

def find_by(id:)
@orm_class.find_by(id: id)
end
end

class ActiveFedoraQueryAdapter < QueryServiceAdapter
def find_by(id:)
@orm_class.find(id)
end
end

def orm_class_name
'ActiveFedora::Base'
end

def orm_class
orm_class_name.constantize
end

def query_service
@query_service ||= QueryServiceAdapter.build(orm_class)
end
end

0 comments on commit 032f9ea

Please sign in to comment.