# 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
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
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