aboutsummaryrefslogtreecommitdiff
path: root/contrib/auto-naming/db.rb
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/auto-naming/db.rb')
-rw-r--r--contrib/auto-naming/db.rb165
1 files changed, 0 insertions, 165 deletions
diff --git a/contrib/auto-naming/db.rb b/contrib/auto-naming/db.rb
deleted file mode 100644
index 822a26bad..000000000
--- a/contrib/auto-naming/db.rb
+++ /dev/null
@@ -1,165 +0,0 @@
-#!/usr/bin/ruby
-
-# Copyright (c) 2006, 2007 Peter Palfrader
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-require "dbi"
-
-class WeaselDbQueryHandle
- def initialize(sth)
- @sth = sth
- end
-
- def next()
- row = @sth.fetch_hash
- if row
- return row
- else
- @sth.finish
- return nil
- end
- end
-end
-
-class Db
- def initialize(host, database, user, password)
- @dbh = DBI.connect("dbi:Pg:#{database}:#{host}", user, password);
- @dbh['AutoCommit'] = false
- @transaction = false
- @pre_initial_transaction=true
- end
-
- def do(query,*args)
- @dbh.do(query,*args)
- end
- def transaction_begin()
- @dbh.do("BEGIN") unless @pre_initial_transaction
- @transaction = true
- @pre_initial_transaction=false
- end
- def transaction_commit()
- @dbh.do("COMMIT")
- @transaction = false
- end
- def transaction_rollback()
- @dbh.do("ROLLBACK")
- end
- def get_primarykey_name(table);
- #return 'ref';
- return table+'_id';
- end
-
- def update(table, values, keys)
- cols = []
- vals = []
- values.each_pair{ |k,v|
- cols << "#{k}=?"
- vals << v
- }
-
- wheres = []
- keys.each_pair{ |k,v|
- wheres << "#{k}=?"
- vals << v
- }
-
- throw "update value set empty" unless cols.size > 0
- throw "where clause empty" unless wheres.size > 0
-
- query = "UPDATE #{table} SET #{cols.join(',')} WHERE #{wheres.join(' AND ')}"
- transaction_begin unless transaction_before=@transaction
- r = @dbh.do(query, *vals)
- transaction_commit unless transaction_before
- return r
- end
-
- def update_row(table, values)
- pk_name = get_primarykey_name(table);
- throw "Ref not defined" unless values[pk_name]
- return update(table, values.clone.delete_if{|k,v| k == pk_name}, { pk_name => values[pk_name] });
- end
- def insert(table, values)
- cols = values.keys
- vals = values.values
- qmarks = values.values.collect{ '?' }
-
- query = "INSERT INTO #{table} (#{cols.join(',')}) VALUES (#{qmarks.join(',')})"
- transaction_begin unless transaction_before=@transaction
- @dbh.do(query, *vals)
- transaction_commit unless transaction_before
- end
-
- def insert_row(table, values)
- pk_name = get_primarykey_name(table);
- if values[pk_name]
- insert(table, values)
- else
- transaction_begin unless transaction_before=@transaction
- row = query_row("SELECT nextval(pg_get_serial_sequence('#{table}', '#{pk_name}')) AS newref");
- throw "No newref?" unless row['newref']
- values[pk_name] = row['newref']
- insert(table, values);
- transaction_commit unless transaction_before
- end
- end
- def delete_row(table, ref)
- pk_name = get_primarykey_name(table);
- query = "DELETE FROM #{table} WHERE #{pk_name}=?"
- transaction_begin unless transaction_before=@transaction
- @dbh.do(query, ref)
- transaction_commit unless transaction_before
- end
- def query(query, *params)
- sth = @dbh.execute(query, *params)
- while row = sth.fetch_hash
- yield row
- end
- sth.finish
- end
- # nil if no results
- # hash if one match
- # throw otherwise
- def query_row(query, *params)
- sth = @dbh.execute(query, *params)
-
- row = sth.fetch_hash
- if row == nil
- sth.finish
- return nil
- elsif sth.fetch_hash != nil
- sth.finish
- throw "More than one result when querying for #{query}"
- else
- sth.finish
- return row
- end
- end
- def query_all(query, *params)
- sth = @dbh.execute(query, *params)
-
- rows = sth.fetch_all
- return nil if rows.size == 0
- return rows
- end
- def query2(query, *params)
- sth = @dbh.execute(query, *params)
- return WeaselDbQueryHandle.new(sth)
- end
-end