class KakaxiParse::BaseModel
Constants
- DEFUALT_LIMIT
Attributes
created_at[RW]
id[RW]
name[RW]
updated_at[RW]
Public Class Methods
all(limit: DEFUALT_LIMIT)
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 15 def self.all(limit: DEFUALT_LIMIT) to_objects(API.new("classes/#{ self.demodulize }", params: { limit: limit }).get['results']) end
demodulize()
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 62 def self.demodulize self.name.split('::').last end
find(id)
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 33 def self.find(id) where(id: id).first end
new(id, name, updated_at, created_at)
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 8 def initialize(id, name, updated_at, created_at) @id = id @name = name if name @updated_at = DateTime.strptime(updated_at, '%Y-%m-%dT%H:%M:%S.%LZ') if updated_at @created_at = DateTime.strptime(created_at, '%Y-%m-%dT%H:%M:%S.%LZ') if created_at end
order(order='created_at', limit=DEFUALT_LIMIT)
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 24 def self.order(order='created_at', limit=DEFUALT_LIMIT) params = { limit: limit }.merge(order: camelize(order)) to_objects(API.new("classes/#{ self.demodulize }", params: params).get['results']) end
short_name()
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 29 def self.short_name raise NotImplementedError end
where(model, hash, limit, belongs_to = [], related_to = [])
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 19 def self.where(model, hash, limit, belongs_to = [], related_to = []) params = { limit: limit }.merge(where: format(hash, belongs_to, related_to).to_json) API.new("classes/#{ model.demodulize }", params: params).get['results'] end
Private Class Methods
camelize(string)
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 77 def self.camelize(string) if ['imsi', 'imei', 'iccid'].include?(string) return string.upcase end string.split('_').map(&:capitalize).join.tap { |e| e[0] = e[0].downcase } end
format(hash, belongs_to, related_to)
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 113 def self.format(hash, belongs_to, related_to) hash = validate_relation(hash, belongs_to, related_to) replace_key(hash, :id, :object_id) keys_to_camel(hash) end
keys_to_camel(hash)
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 72 def self.keys_to_camel(hash) hash.keys.each { |key, _| replace_key(hash, key, camelize(key.to_s)) } hash end
replace_key(hash, old_key, new_key)
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 67 def self.replace_key(hash, old_key, new_key) hash[new_key] = hash.delete(old_key) if hash.has_key? old_key hash end
to_reference_key(reference_name)
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 84 def self.to_reference_key(reference_name) (reference_name.to_s + '_id').to_sym end
to_reference_key_array(reference_names)
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 88 def self.to_reference_key_array(reference_names) reference_names.map { |name| to_reference_key(name) } end
validate_relation(hash, belongs_to, related_to)
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 92 def self.validate_relation(hash, belongs_to, related_to) belongs_to.each do |klass| short_name = klass.short_name reference = to_reference_key(short_name) if hash.has_key? reference replace_key(hash, reference, short_name) hash[short_name] = Datatype::Pointer.new(klass, hash[short_name]).to_hash end end related_to.each do |klass| short_name = klass.short_name reference = to_reference_key(short_name) if hash.has_key? reference replace_key(hash, reference, '$related_to') hash['$related_to'] = { object: Datatype::Pointer.new(klass, hash['$related_to']).to_hash, key: self.reference_name } end end hash end
Public Instance Methods
delete()
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 58 def delete API.new("classes/#{self.class.demodulize}/#{self.id}").delete end
save(record, params, belongs_to = [], related_to = [])
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 37 def save(record, params, belongs_to = [], related_to = []) result = API.new("classes/#{record.class.demodulize}", params: BaseModel.format(params, belongs_to, related_to)).post if result.has_key? 'objectId' self.created_at = DateTime.strptime(result['createdAt'], '%Y-%m-%dT%H:%M:%S.%LZ') self.id = result['objectId'] true else false end end
update(record, params, belongs_to = [], related_to = [])
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 48 def update(record, params, belongs_to = [], related_to = []) result = API.new("classes/#{record.class.demodulize}/#{record.id}", params: BaseModel.format(params, belongs_to, related_to)).put if result.has_key? 'updatedAt' self.updated_at = DateTime.strptime(result['updatedAt'], '%Y-%m-%dT%H:%M:%S.%LZ') true else false end end
Private Instance Methods
build_original_params(params)
click to toggle source
# File lib/kakaxi_parse/base_model.rb, line 119 def build_original_params(params) original_params = {} params.each { |key, value| original_params[key] = value } original_params end