d55c8a52 |
require 'pg'
require './config'
def connect_db
return PG::Connection.open(:dbname=>$appsettings[:dbname],
:host=>$appsettings[:dbhost],
:user=>$appsettings[:dbuser],
:password=>$appsettings[:dbpassword])
end
def check_user(db, user)
result = nil
db.prepare 'check_user', 'SELECT exists(SELECT 1 FROM reviewers WHERE reviewer_name=$1)'
if not user.nil?
v = db.exec_prepared('check_user', [user])
if v.first()['exists'] == 't'
result = user
end
end
return result
end
use Rack::Session::Pool, :expire_after => 2592000
|
d55c8a52 |
if params[:cur_user]
session[:cur_user] = params[:cur_user]
end
short_name = params.find do |x| x[1] == nil end
db = connect_db()
cur_user = check_user(db, session[:cur_user])
if short_name.nil?
restaurants = db.exec 'SELECT restaurant_name,short_name FROM restaurants ORDER BY restaurant_name ASC'
haml :index, :locals => {:restaurants => restaurants, :cur_user => cur_user}
else
short_name = short_name[0]
db.prepare 'get_restaurant_name', 'SELECT restaurant_name FROM restaurants WHERE short_name=$1'
db.prepare 'get_reviews', 'SELECT * FROM get_reviews($1)'
name = db.exec_prepared('get_restaurant_name', [short_name]).first['restaurant_name']
results = db.exec_prepared 'get_reviews', [short_name]
haml :restaurant, :locals => {:reviews => results,
:name => name,
:short_name => short_name,
:cur_user => cur_user}
end
|
d55c8a52 |
def short_name(name)
name.downcase().gsub(/[^a-zA-Z0-9]/, '-')
end
post '/add/restaurant' do
db = connect_db()
if check_user(db, session[:cur_user]).nil?
redirect to("/")
else
db.prepare 'add_restaurant', 'INSERT INTO restaurants (restaurant_name, short_name) VALUES ($1,$2)'
name = params[:restaurant_name]
sn = short_name(name)
db.exec_prepared 'add_restaurant', [name, sn]
redirect to("/?#{sn}")
end
end
post '/add/review' do
db = connect_db()
if check_user(db, session[:cur_user]).nil?
redirect to("/?#{params[:short_name]}")
else
db.prepare 'put_review', 'SELECT * FROM put_review($1, $2, $3)'
db.exec_prepared 'put_review', [ params[:short_name], session[:cur_user], params[:review] ]
redirect to("/?#{params[:short_name]}")
end
end
|