lib/luna_park/extensions/repositories/postgres/read.rb in luna_park-0.12.1 vs lib/luna_park/extensions/repositories/postgres/read.rb in luna_park-0.13.0
- old
+ new
@@ -3,59 +3,50 @@
module LunaPark
module Extensions
module Repositories
module Postgres
module Read
- def find!(pk_value, for_update: false)
- ds = dataset.where(primary_key => pk_value)
- read_one!(ds, for_update: for_update, not_found_meta: pk_value)
- end
-
- def find(pk_value, for_update: false)
- ds = dataset.where(primary_key => pk_value)
- read_one(ds, for_update: for_update)
- end
-
def lock!(pk_value)
- lock(pk_value) || raise(Errors::NotFound, "#{short_class_name} (#{pk_value})")
+ transaction { yield find! pk_value, for_update: true }
end
def lock(pk_value)
- dataset.for_update.select(primary_key).where(primary_key => pk_value).first ? true : false
+ transaction { yield find pk_value, for_update: true }
end
- def count
- dataset.count
+ def transaction(&block)
+ dataset.transaction(&block)
end
- def all
- read_all(dataset.order { created_at.desc })
+ def find!(pk_value, **scope)
+ found! find(pk_value, **scope), not_found_by: pk_value
end
- def last
- to_entity from_row dataset.order(:created_at).last
+ def find(pk_value, **scope)
+ read_one scoped(**scope).where(primary_key => pk_value)
end
- private
+ def count(**scope)
+ scoped(**scope).count
+ end
- def read_one!(dataset, for_update: false, not_found_meta:)
- read_one(dataset, for_update: for_update).tap do |entity|
- raise Errors::NotFound, "#{short_class_name} (#{not_found_meta})" if entity.nil?
- end
+ def all(**scope)
+ read_all(scoped(**scope).order { created_at.desc })
end
- def read_one(dataset, for_update: false)
- dataset = dataset.for_update if for_update
- row = dataset.first
- to_entity from_row(row)
+ def first(**scope)
+ read_one scoped(**scope).order(:created_at).first
end
- def read_all(dataset)
- to_entities from_rows(dataset)
+ def last(**scope)
+ read_one scoped(**scope).order(:created_at).last
end
- def short_class_name
- @short_class_name ||= self.class.name[/::(\w+)\z/, 1]
+ private
+
+ def scope(dataset, for_update: false, **_)
+ dataset = dataset.for_update if for_update
+ dataset
end
end
end
end
end