summaryrefslogtreecommitdiff
path: root/patchtracker
diff options
context:
space:
mode:
authorSean Finney <seanius@debian.org>2008-06-08 20:10:14 +0200
committerSean Finney <seanius@debian.org>2008-06-11 22:15:28 +0200
commita924b7efb5e88b1c35b999989fc77caf7bcd0379 (patch)
treedbc7fb8c5790df8b20ea989914d81e4a39957ea1 /patchtracker
parentbf1d3cd47db3d28a5f1be77d3676cd2b1af385a9 (diff)
downloadpatch-tracker-a924b7efb5e88b1c35b999989fc77caf7bcd0379.tar.gz
saving some work on sqlite related stuff
Diffstat (limited to 'patchtracker')
-rw-r--r--patchtracker/DB.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/patchtracker/DB.py b/patchtracker/DB.py
new file mode 100644
index 0000000..2f1b208
--- /dev/null
+++ b/patchtracker/DB.py
@@ -0,0 +1,68 @@
+from pysqlite2 import dbapi2 as sqlite
+import Conf as Conf
+import os
+import errno
+import time
+
+
+class PatchTrackerDB:
+ db = None
+ now = None
+ cursor = None
+
+ def __init__(self, dbname=Conf.database):
+ self.now = int(time.time())
+ self.db = sqlite.connect(dbname)
+ self.cursor = self.db.cursor()
+ self.cursor.execute("SELECT * FROM sqlite_master WHERE name='packages'")
+ if not self.cursor.fetchone():
+ print "repopulating empty database..."
+ for l in file(Conf.sqlschema).readlines():
+ self.cursor.execute(l)
+
+ def findSourcePackage(self, srcpkg):
+ q = "SELECT * FROM packages WHERE package = ? AND version = ?"
+ self.cursor.execute(q, (srcpkg.name, srcpkg.version))
+ s = self.cursor.fetchone()
+ return s
+
+ def saveSourcePackage(self, srcpkg):
+ s = self.findSourcePackage(srcpkg)
+ if not s:
+ print "creating new record for",srcpkg
+ q = "INSERT INTO packages (package,format,diffgz,loc,type,version,updated) VALUES (?,?,?,?,?,?,?)"
+ else:
+ print "updating record for",srcpkg
+ q = "UPDATE packages SET package=?,format=?,diffgz=?,loc=?,type=?,version=?,updated=?"
+ self.cursor.execute(q, (srcpkg.name,srcpkg.format,srcpkg.diffgz,srcpkg.loc,srcpkg.type,srcpkg.version,self.now))
+
+ def findRelease(self, release)
+ raise Exception("not yet implemented")
+
+ def saveRelease(self, release)
+ raise Exception("not yet implemented")
+
+ def findComponent(self, release, component):
+ raise Exception("not yet implemented")
+
+ def saveComponent(self, component):
+ raise Exception("not yet implemented")
+
+ def relateComponentToSourcePackage(self, component, srcpkg):
+ raise Exception("not yet implemented")
+
+ def finalize(self):
+ # remove cruft in a rather lazy way
+ self.cursor.execute("DELETE FROM packages WHERE updated < ?", (self.now,))
+ self.db.commit()
+
+
+if __name__ == "__main__":
+ print "patch tracker db testing"
+ d = PatchTrackerDB(dbname="foo.db")
+ from SourceArchive import SourcePackage
+ sp = SourcePackage({'Package':'foo','Format':'blah','Directory':'/foo','Version':'1.2.3.4','Files':[]})
+ d.saveSourcePackage(sp)
+ d.finalize()
+
+