class NetMate::Model
Public Class Methods
all()
click to toggle source
# File lib/net_mate/model.rb, line 65 def self.all return find_by_sql("SELECT * FROM #{ActiveSupport::Inflector.tableize(self.name)}") end
find(id)
click to toggle source
# File lib/net_mate/model.rb, line 69 def self.find(id) id = id.to_i dbh = Connection.new.connect res = self.new dbh.query("SELECT * FROM #{ActiveSupport::Inflector.tableize(self.name)} WHERE ID = #{id}").each do |row| row.each { |k ,v| res.instance_variable_set("@#{k}".to_sym, v) } end rescue ensure Connection.disconnect dbh return res end
find_by(col_name, value)
click to toggle source
# File lib/net_mate/model.rb, line 96 def self.find_by(col_name, value) return find_by_sql("SELECT * FROM #{ActiveSupport::Inflector.tableize(self.name)} WHERE #{col_name} = '#{value}'") end
find_by_sql(sql_query)
click to toggle source
# File lib/net_mate/model.rb, line 82 def self.find_by_sql(sql_query) dbh = Connection.new.connect res = [] dbh.query(sql_query).each_with_index do |row, i| res[i] = self.new row.each { |k, v| res[i].instance_variable_set("@#{k}".to_sym, v) } end rescue puts "An error occurred" ensure Connection.disconnect dbh return res end
new(args = {})
click to toggle source
# File lib/net_mate/model.rb, line 36 def initialize args = {} @@columns = [] get_columns make_accessors args.each { |k ,v| instance_variable_set("@#{k}".to_sym, v) } end
Public Instance Methods
destroy()
click to toggle source
# File lib/net_mate/model.rb, line 100 def destroy dbh = Connection.new.connect dbh.query "DELETE FROM #{find_name} WHERE id = #{instance_variable_get(:@id)}" rescue puts "An error occurred" ensure Connection.disconnect dbh end
find_name()
click to toggle source
# File lib/net_mate/model.rb, line 61 def find_name ActiveSupport::Inflector.tableize(self.class.name) end
get_columns()
click to toggle source
# File lib/net_mate/model.rb, line 28 def get_columns dbh = Connection.new.connect dbh.query("desc #{find_name}").each do |row| @@columns << row.values[0] end Connection.disconnect dbh end
make_accessors()
click to toggle source
# File lib/net_mate/model.rb, line 9 def make_accessors self.class.class_eval do @@columns.each do |col| if col != 'id' attr_accessor col.to_sym else attr_reader :id end end end end
save()
click to toggle source
# File lib/net_mate/model.rb, line 43 def save table = find_name dbh = Connection.new.connect values = [] cols = @@columns.reject { |e| e == 'id' } cols.each do |col| values << self.send(col.to_sym) end values = values.map { |v| "'#{v}'" }.join(', ') dbh.query "INSERT INTO #{table}(#{cols.join(',')}) VALUES (#{values})" rescue puts "An error occurred while saving into the database." else puts "New record was saved/added successfully." ensure Connection.disconnect dbh end
update()
click to toggle source
# File lib/net_mate/model.rb, line 21 def update dbh = Connection.new.connect cols = @@columns.reject { |e| e == 'id' } attributes = cols.each_with_index.map { |c, i| "#{c} = '#{self.send(c.to_sym)}'" }.join(', ') dbh.query("UPDATE #{find_name} SET #{attributes} WHERE id = #{@id} ") end