summaryrefslogtreecommitdiff
path: root/patchtracker/DB.py
blob: 2f1b208fbaa743be24e970e2117539866f56fadb (plain)
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()