Sha256: bdabc8e17e332745afcbc3c72c3d63d6909165c9479175fc0ef60188b04f58a0
Contents?: true
Size: 773 Bytes
Versions: 1
Compression:
Stored size: 773 Bytes
Contents
module Kamerling class Repo NotFound = Class.new RuntimeError def initialize klass, source @klass, @source = klass, source end def << object hash = object.to_h warn_off { source << hash } rescue Sequel::UniqueConstraintViolation warn_off { source.where(uuid: object.uuid).update hash } end def [] uuid hash = warn_off { source[uuid: uuid] } raise NotFound, "#{klass} with UUID #{uuid}" unless hash klass.from_h hash end def all source.all.map { |hash| klass.from_h hash } end def related_to object key = "#{object.class.name.split('::').last.downcase}_uuid".to_sym source.where(key => object.uuid).map { |hash| klass.from_h hash } end attr_reader :klass, :source private :klass, :source end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kamerling-0.0.1 | lib/kamerling/repo.rb |