1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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()
|