diff options
Diffstat (limited to 'patchtracker/DB.py')
-rw-r--r-- | patchtracker/DB.py | 52 |
1 files changed, 13 insertions, 39 deletions
diff --git a/patchtracker/DB.py b/patchtracker/DB.py index 370d691..9324e97 100644 --- a/patchtracker/DB.py +++ b/patchtracker/DB.py @@ -66,13 +66,6 @@ class PatchTrackerDB: def setFactory(self, factory): self.db.row_factory = factory - def findSourcePackage(self, srcpkg): - q = "SELECT * FROM packages WHERE name=? AND version=?" - cursor = self.db.cursor() - cursor.execute(q, (srcpkg.name, srcpkg.version)) - s = cursor.fetchone() - return s - def saveSourcePackage(self, srcpkg): cursor = self.db.cursor() #print "creating new record for",srcpkg @@ -83,42 +76,31 @@ class PatchTrackerDB: srcpkg.version,srcpkg.diffgz_name,srcpkg.diffgz_size, srcpkg.diffgz_md5sum)) - def findSuite(self, suite): - q = "SELECT * FROM suites WHERE name = ?" + def saveSuite(self, suite): + q = "INSERT OR REPLACE INTO suites (id,name) \ + VALUES ((SELECT MAX(id)+1 FROM suites),?)" cursor = self.db.cursor() cursor.execute(q, (suite,)) - return cursor.fetchone() - def saveSuite(self, suite): - s = self.findSuite(suite) - if not s: - q = "INSERT INTO suites (id,name) \ - VALUES ((SELECT MAX(id)+1 FROM suites),?)" - cursor = self.db.cursor() - cursor.execute(q, (suite,)) - - def findComponent(self, component): - q = "SELECT * FROM components WHERE name = ?" + def saveComponent(self, component): + q = "INSERT OR REPLACE INTO components (id,name) \ + VALUES ((SELECT MAX(id)+1 FROM components),?)" cursor = self.db.cursor() cursor.execute(q, (component,)) - return cursor.fetchone() - def saveComponent(self, component): - c = self.findComponent(component) - if not c: - q = "INSERT INTO components (id,name) \ - VALUES ((SELECT MAX(id)+1 FROM components),?)" - cursor = self.db.cursor() - cursor.execute(q, (component,)) - - def findCollection(self, package="%"): + def findCollection(self, package="%", version=None): oldfactory = self.db.row_factory self.db.row_factory = srcpkg_collection_factory cursor = self.db.cursor() toc = SourceArchive.SourcePackageIndex() q = "SELECT * FROM packages AS p,package_rel_map AS m,suites AS s \ WHERE p.name LIKE ? AND p.id = m.package_id AND m.suite_id = s.id" - cursor.execute(q, (package,)) + qargs = (package,) + if version: + q += " AND p.version = ?" + qargs += (version,) + + cursor.execute(q, qargs) # use srcpkg_factory to fetch sourcepackages, once per suite for srcpkg,rest in cursor.fetchall(): toc.ins(srcpkg, rest["name"]) @@ -131,14 +113,6 @@ class PatchTrackerDB: def findMasterIndex(self): return self.findCollection(package="%") - def findSourcePackageRelation(self, srcpkg, suite): - q = "SELECT * FROM packages AS p,suites AS s,package_rel_map AS m \ - WHERE p.name=? AND s.name=? AND m.package_id=p.id \ - AND m.suite_id=s.id" - cursor = self.db.cursor() - cursor.execute(q, (srcpkg.name, suite)) - return cursor.fetchone() - def relateSourcePackage(self, name, version, suite, component): q = "INSERT OR REPLACE INTO package_rel_map \ (package_id,suite_id,component_id) \ |