# File lib/swiss_db/swiss_model.rb, line 119 def primary_key @primary_key.nil? ? "id" : @primary_key end
class SwissDB::SwissModel
Attributes
values[RW]
meh? .. won't work for now in java… created classes become java packages name will become the namespace of the package… def self.inherited(subclass)
puts "New subclass: #{subclass.class.name.split('.').last}"
end
Public Class Methods
all()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 123 def all # select_all cursor = store.select_all(@table_name, self) cursor end
class_name()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 98 def class_name @class_name end
create(obj)
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 147 def create(obj) # create a row result = store.insert(@table_name, obj) if result == -1 puts "An error occured inserting values into #{@table_name}" else return self.where(primary_key => result.intValue).first end end
destroy_all!()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 157 def destroy_all! # destroy all of this kind (empty table) store.destroy_all(@table_name) end
first()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 135 def first # select all and get first model = all.first model end
last()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 141 def last # select all and get last model = all.last model end
method_missing(methId, *args)
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 22 def self.method_missing(methId, *args) str = methId.id2name if str.include?("find_by") where(str.split("find_by_")[1] => args[0]).first end end
new(h={})
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 14 def initialize(h={}) h.each do |k,v| instance_variable_set("@#{k}", v) end @new_record = (h == {}) # any loaded record should have atleast SOME data @values = {} end
primary_key()
click to toggle source
set_class_name(class_name)
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 102 def set_class_name(class_name) # hack, class.name not functioning in RM Android... @class_name = class_name set_table_name(class_name.tableize) end
set_primary_key(primary_key)
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 115 def set_primary_key(primary_key) @primary_key = primary_key end
set_table_name(table_name)
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 107 def set_table_name(table_name) @table_name = table_name end
store()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 94 def store SwissDB.store end
table_name()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 111 def table_name @table_name end
where(values)
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 129 def where(values) # select <table> where <field> = <value> cursor = store.select(@table_name, values, self) cursor end
Public Instance Methods
method_missing(methId, *args)
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 29 def method_missing(methId, *args) str = methId.id2name if str[-1] == '=' # setter instance_variable_set("@#{str.chop}", args[0]) @values[str.chop] = args[0] return args[0] end if instance_variable_get("@#{str}") return instance_variable_get("@#{str}") end end
new_record?()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 43 def new_record? @new_record end
primary_key()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 70 def primary_key self.class.primary_key end
primary_key_value()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 74 def primary_key_value self.send(primary_key.to_sym) end
save()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 47 def save unless new_record? store.update(table_name, @values, {primary_key => primary_key_value}) else store.insert(table_name, @values) end @values = {} end
store()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 82 def store self.class.store end
table_name()
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 78 def table_name self.class.table_name end
update_attribute(key, value)
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 60 def update_attribute(key, value) store.update(table_name, {key => value}, {primary_key => primary_key_value}) end
update_attributes(hash)
click to toggle source
# File lib/swiss_db/swiss_model.rb, line 66 def update_attributes(hash) hash.each { |k, v| update_attribute(k, v) } end