class Ldp::Orm

Attributes

last_response[R]
resource[R]

Public Class Methods

new(resource) click to toggle source
# File lib/ldp/orm.rb, line 6
def initialize resource
  @resource = resource
end

Public Instance Methods

create() click to toggle source
# File lib/ldp/orm.rb, line 46
def create
  Ldp.instrument 'create.orm.ldp', subject: subject_uri do
    # resource.create returns a reloaded resource which causes any default URIs (e.g. "<>")
    # in the graph to be transformed to routable URIs
    Ldp::Orm.new resource.create
  end
end
delete() click to toggle source
# File lib/ldp/orm.rb, line 74
def delete
  Ldp.instrument 'delete.orm.ldp', subject: subject_uri do
    resource.delete
  end
end
graph() click to toggle source
# File lib/ldp/orm.rb, line 22
def graph
  Ldp.instrument 'graph.orm.ldp', subject: subject_uri do
    resource.graph
  end
end
new?() click to toggle source
# File lib/ldp/orm.rb, line 14
def new?
  resource.new?
end
persisted?() click to toggle source
# File lib/ldp/orm.rb, line 18
def persisted?
  !new?
end
query(*args, &block) click to toggle source
# File lib/ldp/orm.rb, line 34
def query *args, &block
  Ldp.instrument 'query.orm.ldp', subject: subject_uri do
    graph.query *args, &block
  end
end
reload() click to toggle source
# File lib/ldp/orm.rb, line 40
def reload
  Ldp.instrument 'reload.orm.ldp', subject: subject_uri do
    Ldp::Orm.new resource.reload
  end
end
save() click to toggle source
# File lib/ldp/orm.rb, line 54
def save
  Ldp.instrument 'save.orm.ldp', subject: subject_uri do
    response = create_or_update

    response.success?
  end
rescue Ldp::HttpError
  false
end
save!() click to toggle source
# File lib/ldp/orm.rb, line 64
def save!
  result = create_or_update

  if result.is_a? RDF::Enumerable
    raise Ldp::GraphDifferenceException, 'Graph failed to persist', result
  end

  result
end
subject_uri() click to toggle source
# File lib/ldp/orm.rb, line 10
def subject_uri
  resource.subject_uri
end
value(predicate) click to toggle source
# File lib/ldp/orm.rb, line 28
def value predicate
  graph.query([subject_uri, predicate, nil]).map do |stmt|
    stmt.object
  end
end

Private Instance Methods

create_or_update() click to toggle source
# File lib/ldp/orm.rb, line 82
def create_or_update
  @last_response = resource.save
rescue Ldp::HttpError => e
  @last_response = e
  logger.debug e
  raise e
end
logger() click to toggle source
# File lib/ldp/orm.rb, line 90
def logger
  Ldp.logger
end