class Algernon::Model
Constants
- DB
Attributes
fields[R]
table_name[R]
Public Class Methods
columns()
click to toggle source
# File lib/algernon/model/model.rb, line 89 def columns @model_columns ||= fields.keys end
create_table()
click to toggle source
# File lib/algernon/model/model.rb, line 83 def create_table query = "CREATE TABLE IF NOT EXISTS #{@table_name}"\ "(#{fields_builder(@fields)})" DB.execute(query) end
property(field_name, options = {})
click to toggle source
# File lib/algernon/model/model.rb, line 78 def property(field_name, options = {}) @fields[field_name] = options attr_accessor field_name end
to_table(table_name)
click to toggle source
# File lib/algernon/model/model.rb, line 72 def to_table(table_name) @table_name = table_name.to_s @fields = {} property :id, type: :integer, primary_key: true end
Public Instance Methods
destroy()
click to toggle source
# File lib/algernon/model/model.rb, line 36 def destroy DB.execute("DELETE FROM #{self.class.table_name} WHERE id= ?", id) end
save()
click to toggle source
# File lib/algernon/model/model.rb, line 11 def save if id query = "UPDATE #{self.class.table_name} "\ "SET #{update_field_set} "\ "WHERE id = ?" DB.execute(query, table_values, id) else query = "INSERT INTO #{self.class.table_name} "\ "(#{table_fields}) "\ "VALUES(#{values_placeholders})" DB.execute(query, table_values) self.id = DB.execute("SELECT last_insert_rowid()") end self.class.find(id) end
update(parameters)
click to toggle source
# File lib/algernon/model/model.rb, line 28 def update(parameters) parameters.each do |key, value| send("#{key}=", value) end save end
Private Instance Methods
columns_except_id()
click to toggle source
# File lib/algernon/model/model.rb, line 44 def columns_except_id self.class.columns.without_id.with_value(self) end
table_fields()
click to toggle source
# File lib/algernon/model/model.rb, line 40 def table_fields columns_except_id.join(", ") end
table_values()
click to toggle source
# File lib/algernon/model/model.rb, line 53 def table_values values = [] columns_except_id.each do |field| values << send(field) end values end
update_field_set()
click to toggle source
# File lib/algernon/model/model.rb, line 61 def update_field_set values = [] columns_except_id.each do |field| values << "#{field} = ? " end values.join(", ") end
values_placeholders()
click to toggle source
# File lib/algernon/model/model.rb, line 48 def values_placeholders count = columns_except_id.count (["?"] * count).join(", ") end