webapp: serve static files from /static
[~helmut/debian-dedup.git] / readyaml.py
index f4d6ead..2ef9a3b 100755 (executable)
@@ -2,6 +2,7 @@
 """This tool reads a yaml file as generated by importpkg.py on stdin and
 updates the database with the contents."""
 
+import optparse
 import sqlite3
 import sys
 
@@ -25,6 +26,8 @@ def readyaml(db, stream):
         pid = None
 
     cur.execute("BEGIN;")
+    cur.execute("SELECT name, id FROM function;")
+    funcmapping = dict(cur.fetchall())
     if pid is not None:
         cur.execute("DELETE FROM content WHERE pid = ?;", (pid,))
         cur.execute("DELETE FROM dependency WHERE pid = ?;", (pid,))
@@ -45,13 +48,18 @@ def readyaml(db, stream):
         cur.execute("INSERT INTO content (pid, filename, size) VALUES (?, ?, ?);",
                     (pid, entry["name"], entry["size"]))
         cid = cur.lastrowid
-        cur.executemany("INSERT INTO hash (cid, fid, hash) VALUES (?, (SELECT id FROM function WHERE name = ?), ?);",
-                        ((cid, func, hexhash)
+        cur.executemany("INSERT INTO hash (cid, fid, hash) VALUES (?, ?, ?);",
+                        ((cid, funcmapping[func], hexhash)
                          for func, hexhash in entry["hashes"].items()))
     raise ValueError("missing commit block")
 
 def main():
-    db = sqlite3.connect("test.sqlite3")
+    parser = optparse.OptionParser()
+    parser.add_option("-d", "--database", action="store",
+                      default="test.sqlite3",
+                      help="path to the sqlite3 database file")
+    options, args = parser.parse_args()
+    db = sqlite3.connect(options.database)
     readyaml(db, sys.stdin)
 
 if __name__ == "__main__":