[svn r1529] Mise � jour des fonctions d'acc�s � la DB. xbelweb
authorfabien
Tue, 23 Sep 2003 10:26:35 -0400
branchxbelweb
changeset 2 4cb6d9f3d3eb
parent 1 800536f34f15
child 3 9e7e8b678819
[svn r1529] Mise � jour des fonctions d'acc�s � la DB.
lib/bkmark.py
lib/config.py
lib/my_db.py
--- a/lib/bkmark.py	Tue Sep 23 10:26:16 2003 -0400
+++ b/lib/bkmark.py	Tue Sep 23 10:26:35 2003 -0400
@@ -8,39 +8,5 @@
 		self.name = ''
 		self.desc = ''
 		self.added = time.strftime('%Y-%m-%d')
-	def add_to_db(self, cnx):
-		id = cnx.query("""
-			SELECT nextid FROM db_sequence WHERE
-			db_sequence.seq_name = 'bookmarks';
-			""").getresult()[0][0]
-		res = cnx.query("""
-			INSERT INTO bookmarks(id, url, name, ldesc, added)
-			VALUES (%d, '%s', '%s', '%s', '%s');
-			""" % (id, self.url, self.name, self.desc,
-			self.added))
-		cnx.query("""
-			UPDATE db_sequence SET nextid = %d
-			WHERE seq_name = 'bookmarks';
-			""" % (id+1,))
-		return res
 
-def get_from_form(form):
-	bk = Bookmark()
-	bk.url = form["url"].value
-	bk.name = form["name"].value
-	bk.desc = form["desc"].value
-	return bk
 
-def get_from_id(cnx, id):
-	bk = Bookmark()
-	res = cnx.query("""
-		SELECT url, name, ldesc, added
-		FROM bookmarks
-		WHERE id = %d;
-		""" % (id,))
-	res = res.dictresult()[0]
-	bk.url = res['url']
-	bk.name = res['name']
-	bk.desc = res['ldesc']
-	bk.added = res['added']
-	return bk
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/config.py	Tue Sep 23 10:26:35 2003 -0400
@@ -0,0 +1,7 @@
+#!/usr/bin/python
+
+host = 'www.tzone.org'
+user = 'php'
+passwd = 'crow'
+database = 'bookmarker3'
+port = 10021
--- a/lib/my_db.py	Tue Sep 23 10:26:16 2003 -0400
+++ b/lib/my_db.py	Tue Sep 23 10:26:35 2003 -0400
@@ -1,12 +1,116 @@
 #!/usr/bin/python
 
 import pg
+import config
 
-host = 'www.tzone.org'
-user = 'php'
-passwd = 'crow'
-database = 'bookmarker3'
-port = 10021
+class MyDbConnexion:
+	def __init__(self):
+		self.cnx = pg.connect(config.database, config.host,
+		config.port, None, None, config.user, config.passwd)
+	def add_bookmark(self, bk):
+		id = self.get_next_id('bookmarks')
+		res = self.cnx.query("""
+			INSERT INTO bookmarks(id, url, name, ldesc, added)
+			VALUES (%d, '%s', '%s', '%s', '%s');
+			INSERT INTO bookmarks(bookmark, keyword)
+			VALUES (%d, %d);
+			""" % (id, bk.url, bk.name, bk.desc, bk.added,
+			id, 0))
+		return id
+	def get_bookmark(self, id):
+		bk = Bookmark()
+		res = self.cnx.query("""
+			SELECT url, name, ldesc, added
+			FROM bookmarks
+			WHERE id = %d;
+			""" % (id,))
+		res = res.dictresult()[0]
+		bk.url = res['url']
+		bk.name = res['name']
+		bk.desc = res['ldesc']
+		bk.added = res['added']
+		bk.id = id
+		return bk
+	def update_bookmark(self, bk):
+		return self.cnx.query("""
+			UPDATE bookmarks
+			SET url = '%s', name = '%s',
+			ldesc = '%s', added = '%s'
+			WHERE id = %d;
+			""" % (bk.url, bk.name, bk.desc, bk.added, bk.id))
+	def remove_bookmark(self, id):
+		return self.cnx.query("""
+			DELETE FROM bookmarks_keywords
+			WHERE bookmark = %d;
+			DELETE FROM bookmarks
+			WHERE id = %d;
+			""" % (id, id))
+	def add_keyword(self, name):
+		id = self.get_next_id('keywords')
+		res = self.cnx.query("""
+			INSERT INTO keywords(id, name)
+			VALUES (%d, '%s')'
+			""" % (id, name))
+		return id
+	def get_keyword(self, id):
+		return self.cnx.query("""
+			SELECT name FROM keywords
+			WHERE keyword.id = %d;
+			""" % (id,)).getresult()[0][0]
+	def get_keywords(self, bk_id):
+		return self.cnx.query("""
+			SELECT id, name FROM keywords, bookmarks_keywords
+			WHERE keywords.id = bookmarks_keywords.keyword
+			AND bookmarks_keywords.bookmark = %d;
+			""" % (bk_id,))
+	def update_keyword(self, id, name):
+		return self.cnx.query("""
+			UPDATE keywords
+			SET name = '%s'
+			WHERE id = %d;
+			""" % (name, id))
+	def remove_keyword(self, id):
+		if id == 0:
+			raise "Can't remove default keyword!"
+		return self.cnx.query("""
+			DELETE FROM bookmarks_keywords
+			WHERE keyword = %d;
+			DELETE FROM keywords
+			WHERE id = %d;
+			""" % (id, id))
+	def merge_keywords(self, merge_id, into_id):
+		self.cnx.query("""
+			UPDATE bookmarks_keywords
+			SET keyword = %d
+			WHERE keyword = %d;
+			""" % (into_id, merge_id))
+		self.remove_keyword(merge_id)
+	def get_all_keywords(self):
+		self.cnx.query("SELECT id, name FROM keywords;"
+	def get_bookmarks(self, has_kw, except_kw):
+		basic_qry = """
+		  SELECT id, name, url FROM bookmarks, bookmarks_keywords
+		  WHERE bookmarks.id = bookmarks_keywords.bookmark
+		  AND bookmarks_keywords.keyword = %d
+		  """
+		has_kw.reverse()
+		kw = has_kw.pop()
+		qry = basic_qry % kw
+		has_kw.reverse()
+		for kw in has_kw:
+			qry = qry + ("INTERCEPT " + basic_qry % kw)
+		for kw in except_kw:
+			qry = qry + ("EXCEPT " + basic_qry % kw)
+		qry = qry + ';'
+	def get_next_id(self, seq_name):
+		id = self.cnx.query("""
+			SELECT nextid FROM db_sequence WHERE
+			db_sequence.seq_name = '%s';
+			""" % (seq_name)).getresult()[0][0]
+		self.cnx.query("""
+			UPDATE db_sequence SET nextid = %d
+			WHERE seq_name = 'bookmarks';
+			""" % (id+1,))
 
 def connect():
-	return pg.connect(database, host, port, None, None, user, passwd);
+	return MyDbConnexion()