module HuggORM::Persistence::ClassMethods

Attributes

_exclude_fields[RW]
_include_fields[RW]
_key_field[RW]
_primary_key[RW]
_table_name[RW]

Public Instance Methods

all() click to toggle source
# File lib/hugg_orm/persistence.rb, line 47
def all
  results = new_query.select
  new_collection(results)
end
count() click to toggle source
# File lib/hugg_orm/persistence.rb, line 89
def count
  new_query.count
end
create(data) click to toggle source
# File lib/hugg_orm/persistence.rb, line 68
def create(data)
  new(data) if new_query.insert(data) > 0
end
delete_all() click to toggle source
# File lib/hugg_orm/persistence.rb, line 52
def delete_all
  new_query.delete
end
destroy(id) click to toggle source
# File lib/hugg_orm/persistence.rb, line 81
def destroy(id)
  where("#{primary_key} = ?", [id]).delete > 0
end
destroy!(id) click to toggle source
# File lib/hugg_orm/persistence.rb, line 85
def destroy!(id)
  destroy(id) || raise(RecordNotFound.new(id))
end
escape_like(str = '') click to toggle source
# File lib/hugg_orm/persistence.rb, line 121
def escape_like(str = '')
  pat = Regexp.union("\\", "%", "_")
  str.gsub(pat) { |mat| ["\\", mat].join }
end
exclude_fields(*fields) click to toggle source
# File lib/hugg_orm/persistence.rb, line 28
def exclude_fields(*fields)
  self._exclude_fields = fields unless fields.empty?
  self._exclude_fields ||= []
end
find(id) click to toggle source
# File lib/hugg_orm/persistence.rb, line 38
def find(id)
  result = where("#{primary_key} = ?", [id]).select.first
  new(result) if result
end
find!(id) click to toggle source
# File lib/hugg_orm/persistence.rb, line 43
def find!(id)
  find(id) || raise(RecordNotFound.new(id))
end
include_fields(*fields) click to toggle source
# File lib/hugg_orm/persistence.rb, line 33
def include_fields(*fields)
  self._include_fields = fields unless fields.empty?
  self._include_fields ||= []
end
key_field(key_field = nil) click to toggle source
# File lib/hugg_orm/persistence.rb, line 23
def key_field(key_field = nil)
  self._key_field = key_field.to_sym unless key_field.nil?
  self._key_field ||= :id
end
limit(limit, offset = nil) click to toggle source
# File lib/hugg_orm/persistence.rb, line 97
def limit(limit, offset = nil)
  new_query.limit(limit, offset)
end
new_collection(data_ary) click to toggle source
# File lib/hugg_orm/persistence.rb, line 109
def new_collection(data_ary)
  data_ary.map { |data| new(data) }
end
new_query() click to toggle source
# File lib/hugg_orm/persistence.rb, line 105
def new_query
  Query.new(table_name)
end
order(*args) click to toggle source
# File lib/hugg_orm/persistence.rb, line 101
def order(*args)
  new_query.order(*args)
end
primary_key(primary_key = nil) click to toggle source
# File lib/hugg_orm/persistence.rb, line 18
def primary_key(primary_key = nil)
  self._primary_key = primary_key unless primary_key.nil?
  self._primary_key ||= "data->>'#{key_field}'"
end
select(query = nil, where: nil, order: nil, limit: nil, offset: nil) click to toggle source
# File lib/hugg_orm/persistence.rb, line 56
def select(query = nil, where: nil, order: nil, limit: nil, offset: nil)
  return new_collection(query.select) if query

  query = new_query
  query.where(where[:conditions], where[:values]) if where
  query.order(order) if order
  query.limit(limit) if limit
  query.offset(offset) if offset

  new_collection(query.select)
end
string_to_pgtimestamp(string) click to toggle source
# File lib/hugg_orm/persistence.rb, line 117
def string_to_pgtimestamp(string)
  to_pgtimestamp("'#{string}'")
end
table_name(table_name = nil) click to toggle source
# File lib/hugg_orm/persistence.rb, line 13
def table_name(table_name = nil)
  self._table_name = table_name unless table_name.nil?
  self._table_name
end
to_pgtimestamp(field) click to toggle source
# File lib/hugg_orm/persistence.rb, line 113
def to_pgtimestamp(field)
  "to_timestamp(#{field}, 'YYYY-MM-DD HH24:MI:SS')"
end
update(id, data) click to toggle source
# File lib/hugg_orm/persistence.rb, line 72
def update(id, data)
  results = where("#{primary_key} = ?", [id]).update(data, true)
  new(results.first) unless results.empty?
end
update!(id, data) click to toggle source
# File lib/hugg_orm/persistence.rb, line 77
def update!(id, data)
  update(id, data) || raise(RecordNotFound.new(id))
end
where(conditions, values = []) click to toggle source
# File lib/hugg_orm/persistence.rb, line 93
def where(conditions, values = [])
  new_query.where(conditions, values)
end