Skip to content

Instantly share code, notes, and snippets.

@ahimmelstoss
Created October 10, 2013 03:23
Show Gist options
  • Save ahimmelstoss/6912562 to your computer and use it in GitHub Desktop.
Save ahimmelstoss/6912562 to your computer and use it in GitHub Desktop.
require 'sqlite3'
class Student
attr_accessor :name, :twitter, :linkedin, :facebook, :website, :id
@@db = SQLite3::Database.new 'students.db'
@@students = []
def initialize
if @@students.count == 0
@id = 1
else
@id = @@students.max_by { |s| s.id }.id + 1
end
@@students << self
@saved = false
end
def self.load(id)
load_sql = "SELECT * FROM students WHERE id = ?"
results = @@db.execute(load_sql, id)
return Student.new_from_db(results.first)
end
def self.new_from_db(row)
s = Student.new
s.id = row[0]
s.name = row[1]
s.twitter = row[2]
s.linkedin = row[3]
s.facebook = row[4]
s.website = row[5]
s.saved!
return s
end
def save
saved? ? update : insert
end
def saved!
@saved = true
end
def saved?
@saved
end
def insert
sql = "INSERT INTO students (name, twitter, linkedin, facebook, website) VALUES (?, ?, ?, ?, ?)"
@@db.execute(sql, self.name, self.twitter, self.linkedin, self.facebook, self.website)
@saved = true
find = "SELECT id FROM students WHERE name = ? ORDER BY id DESC LIMIT 1"
results = @@db.execute(find, self.name)
@id = results.flatten.first
return @saved
end
def update
if saved?
sql = "UPDATE students SET name = ?, twitter = ?, linkedin = ?, facebook = ?, website = ? WHERE id = ?"
@@db.execute(sql, self.name, self.twitter, self.linkedin, self.facebook, self.website, self.id)
end
return @saved
end
def ==(other_student)
self.id == other_student.id
end
def self.reset_all
@@students.clear
end
def self.all
@@students
end
def self.find_by_name(name)
@@students.select { |s| s.name == name }
end
def self.find(id)
return @@students.select { |s| s.id == id }.first
end
def self.delete(id)
@@students.reject! { |s| s.id == id}
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment