class Preserves::Repository

Attributes

model_class[RW]

Public Class Methods

new(options={}) click to toggle source
# File lib/preserves/repository.rb, line 11
def initialize(options={})
  self.model_class = options[:model]
end

Public Instance Methods

[](primary_key_value)
Alias for: fetch
fetch(primary_key_value) click to toggle source
# File lib/preserves/repository.rb, line 15
def fetch(primary_key_value)
  select(fetch_query, primary_key_value).only
end
Also aliased as: []
fetch!(primary_key_value) click to toggle source
# File lib/preserves/repository.rb, line 19
def fetch!(primary_key_value)
  select(fetch_query, primary_key_value).only!
end
map(result, relations={}) click to toggle source
# File lib/preserves/repository.rb, line 25
def map(result, relations={})
  mapper.map(result, relations)
end
map_one(result, relations={}) click to toggle source
# File lib/preserves/repository.rb, line 29
def map_one(result, relations={})
  mapper.map_one(result, relations)
end
mapping(&block) click to toggle source
# File lib/preserves/repository.rb, line 33
def mapping(&block)
  @mapping ||= Mapping.new(self, model_class, &block)
end

Protected Instance Methods

query(sql_string, *params) click to toggle source
# File lib/preserves/repository.rb, line 39
def query(sql_string, *params)
  pg_result = data_store.exec_params(sql_string, params)
  SQL::ResultSet.new(pg_result)
end
select(sql_string, *params) click to toggle source
# File lib/preserves/repository.rb, line 44
def select(sql_string, *params)
  if params && params.last.is_a?(Hash)
    relations = params.pop
  else
    relations = {}
  end
  Selection.new(map(query(sql_string, *params), relations))
end

Private Instance Methods

data_store() click to toggle source

NOTE: We’ll allow overriding this default on a per-repository basis later.

# File lib/preserves/repository.rb, line 60
def data_store
  Preserves.data_store
end
fetch_query() click to toggle source
# File lib/preserves/repository.rb, line 64
def fetch_query
  "SELECT * FROM \"#{mapping.table_name}\" WHERE #{mapping.primary_key} = $1"
end
mapper() click to toggle source
# File lib/preserves/repository.rb, line 55
def mapper
  @mapper ||= Mapper.new(@mapping)
end