lib/waxx/pg.rb in waxx-0.1.2 vs lib/waxx/pg.rb in waxx-0.1.3
- old
+ new
@@ -141,18 +141,32 @@
vals << q[:where][1] if q[:where] and q[:where][1]
vals << q[:having][1] if q[:having] and q[:having][1]
#[sql.join(" "), vals.flatten]
Waxx.debug sql
Waxx.debug vals.join(", ")
- x.db[@db].exec(sql.join(" "), vals.flatten)
+ begin
+ x.db[@db].exec(sql.join(" "), vals.flatten)
+ rescue => e
+ if e =~ /connection/
+ x.db[@db].reset
+ x.db[@db].exec(sql.join(" "), vals.flatten)
+ else
+ raise e
+ end
+ end
end
def get_by_id(x, id, select=nil, view:nil)
get(x, id: id, select: select, view: view).first
end
alias by_id get_by_id
+ def get_by_ulid(x, ulid, select=nil, view:nil)
+ get(x, select: select, view: view, where: ["ulid = $1", [ulid]]).first
+ end
+ alias by_ulid get_by_ulid
+
def post(x, data, cols:nil, returning:nil, view:nil, &blk)
if view
cols = view.columns.select{|n,c| c[:table] == @table}
else
cols ||= @columns
@@ -191,13 +205,11 @@
sql = "UPDATE #{@table} SET "
set = []
vals = []
ret = []
i = 1
- Waxx.debug "data: #{data}"
cols.each{|n,v|
- Waxx.debug "col: #{n}: #{v.inspect}"
if data.has_key? n.to_s or data.has_key? n.to_sym
set << "#{n} = $#{i}"
vals << cast(v, data/n)
ret << n.to_s
i += 1
@@ -206,14 +218,14 @@
sql << set.join(",")
sql << " WHERE #{@pkey} = $#{i} #{where} RETURNING #{returning || ret.join(",")}"
vals << id
Waxx.debug(sql)
Waxx.debug(vals)
- x.db[@db].exec(sql, vals).first
+ x.db[@db].exec(sql, vals).first
end
alias patch put
-
+
def put_post(x, id, data, cols:nil, returning:nil, view: nil)
q = nil
q = get_by_id(x, id, @pkey) if id.to_i > 0
return post(x, data, cols: cols, returning: returning, view: view) if q.nil?
put(x, id, data, cols: cols, returning: returning, view: view)
@@ -228,11 +240,11 @@
else
val
end
end
- def delete(x, id)
- x.db[@db].exec("DELETE FROM #{@table} WHERE #{@pkey} = $1", [id])
+ def delete(x, id, where: nil)
+ x.db[@db].exec("DELETE FROM #{@table} WHERE #{@pkey} = $1 #{where}", [id])
end
def order(req_order, default_order='')
return default_order if req_order.nil?
return orders[req_order.to_sym] if orders.has_key? req_order.to_sym