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
# File lib/swiss_db/swiss_model.rb, line 119
def primary_key
  @primary_key.nil? ? "id" : @primary_key
end
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