lib/my_db.py
changeset 65 b975a3d7606a
parent 57 31271426f879
child 66 a0aa025ee6a2
--- a/lib/my_db.py	Sun Dec 28 15:21:49 2008 -0500
+++ b/lib/my_db.py	Tue Dec 30 22:32:10 2008 -0500
@@ -1,29 +1,33 @@
 import pgdb
-import config
+import os
+
+# BADSMELL: There must be an interface between both
 from bkmark import Bookmark
-import os
 
 def sql_quote(str):
 	return pgdb._quote(str)
 
 class MyDbConnexion:
-	def __init__(self, name):
-		self.cnx = pgdb.connect(database = config.database,
-			host = config.host+':%d'%config.port,
-			user = config.user, password = config.passwd)
+	def __init__(self, config):
+		self.cnx = pgdb.connect(database = config.db_name,
+			host = config.db_host+':%d'%config.db_port,
+			user = config.db_user, password = config.db_passwd)
 		self.crs = self.cnx.cursor();
-		self.userid = self.get_user_id(name)
-		if self.userid == None:
-			self.userid = self.create_user(name)
-		else:
-			self.userid = self.userid[0]
-	def get_user_id(self, name):
+	def connect_user(self, name):
+		if (self.userid == None):
+			self.userid = self._get_user_id(username)
+			if self.userid == None:
+				self.userid = self._create_user(username)
+			else:
+				self.userid = self.userid[0]
+		return self.userid
+	def _get_user_id(self, name):
 		self.crs.execute("""
 			SELECT id FROM users
 			WHERE name = %s;
 			""" % (sql_quote(name),))
 		return self.crs.fetchone()
-	def create_user(self, name):
+	def _create_user(self, name):
 		id = self.get_next_id('users')
 		self.crs.execute("""
 			INSERT INTO users(id, name, full_name)
@@ -63,7 +67,7 @@
 			DELETE FROM preferences WHERE userid = %d;
 			DELETE FROM keywords WHERE userid = %d;
 			DELETE FROM db_sequence WHERE userid = %d;
-			""" % (userid,userid,userid,userid,userid))
+			""" % ((userid,)*5))
 		self.cnx.commit()
 	def get_preferences(self):
 		self.crs.execute("""
@@ -392,5 +396,6 @@
 			""" % (id+1, seq_name, userid))
 		return id
 
-def connect(username):
-	return MyDbConnexion(username)
+def connect(config, username):
+	db = MyDbConnexion(config)
+	db.connect_user(username)