Skip to content

Instantly share code, notes, and snippets.

@mayfer
Created April 14, 2015 17:53
Show Gist options
  • Save mayfer/523db628eac9597ffa62 to your computer and use it in GitHub Desktop.
Save mayfer/523db628eac9597ffa62 to your computer and use it in GitHub Desktop.
Simple ORM livecoding example
require 'pg'
$conn = PG::Connection.open(:dbname => 'lighthouse')
class Venue
attr_accessor :name, :capacity, :id
def initialize(name, capacity)
@id = nil
@name = name
@capacity = capacity
end
def save
if @id == nil
sql = "INSERT INTO stagedocs_venue (name, capacity, city_id, notes, url, phone) VALUES ($1, $2, 1, '', '', '') RETURNING *"
results = $conn.exec_params(sql, [@name, @capacity])
@id = results[0]["id"]
else
sql = "UPDATE stagedocs_venue SET name=$1, capacity=$2 WHERE id=$3"
$conn.exec_params(sql, [@name, @capacity, @id])
end
end
def self.get_by_id(id)
sql = "SELECT * FROM stagedocs_venue WHERE id=$1"
results = $conn.exec_params(sql, [id])
row = results[0]
puts row.inspect
venue = Venue.new(row["name"], row["capacity"])
venue.id = row["id"]
venue
end
end
class Artist
attr_accessor :name, :id
def initialize(name)
@id = nil
@name = name
end
def save
if @id == nil
sql = "INSERT INTO stagedocs_artist () VALUES () RETURNING *"
results = $conn.exec_params(sql, [@name, @capacity])
@id = results[0]["id"]
else
sql = "UPDATE stagedocs_venue SET name=$1, capacity=$2 WHERE id=$3"
$conn.exec_params(sql, [@name, @capacity, @id])
end
end
def self.get_by_id(id)
sql = "SELECT * FROM stagedocs_venue WHERE id=$1"
results = $conn.exec_params(sql, [id])
row = results[0]
puts row.inspect
venue = Venue.new(row["name"], row["capacity"])
venue.id = row["id"]
venue
end
end
venue = Venue.new("New venue", 10000)
venue.save
venue.name = "Murat's Shack"
venue.save
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment