class Ant::Storage::Datasource::Repository

Base class for repositories. The ID generator might get deprecated. It provides the interface for storing objects inside any persistance provider implemented. TODO: Find a better strategy for primary key handling.

Public Class Methods

new(id, id_generator) click to toggle source
# File lib/ant/storage/datasource/repository.rb, line 14
def initialize(id, id_generator)
  @id = id
  @id_generator = id_generator
end

Public Instance Methods

create(id = nil) click to toggle source
# File lib/ant/storage/datasource/repository.rb, line 25
def create(id = nil)
  data = create_initial_object(id)
  existent = exist?(data[@id])
  raise(ObjectAlreadyExists.new(data[@id], existent)) if existent

  create_(data)
end
create_initial_object(id) click to toggle source
# File lib/ant/storage/datasource/repository.rb, line 19
def create_initial_object(id)
  object = { @id => @id_generator.call(id, @id) }
  object.merge!(id) if id.is_a?(Hash)
  object
end
exist?(id) click to toggle source
# File lib/ant/storage/datasource/repository.rb, line 33
def exist?(id)
  get(id)
rescue ObjectNotFound
  nil
end