aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2013-10-05 20:56:58 +0000
committerRob Austein <sra@hactrn.net>2013-10-05 20:56:58 +0000
commite7ceeefbefad64c35d8857e73f167057e586cc59 (patch)
tree7f124929de91ca3ea029eae5573e2d9f628ad118 /scripts
parent724c76c2e6fe6e2f47b4ae096f7c8e667bce6313 (diff)
Checkpoint
svn path=/trunk/; revision=5548
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/rcynic-lta49
1 files changed, 27 insertions, 22 deletions
diff --git a/scripts/rcynic-lta b/scripts/rcynic-lta
index d0d14d22..d88bbf8a 100755
--- a/scripts/rcynic-lta
+++ b/scripts/rcynic-lta
@@ -298,23 +298,24 @@ class DER_object_mixin(object):
try:
self._para_id
except AttributeError:
- self._rpdb.cur.execute("SELECT id FROM outgoing WHERE original = ?", (self.rowid,))
- r = self._rpdb.cur.fetchone()
- if r is None:
- return None
- self._para_id = r[0]
+ self._rpdb.cur.execute("SELECT replacement FROM incoming WHERE id = ?", (self.rowid,))
+ self._para_id = self._rpdb.cur.fetchone()[0]
return self._rpdb.find_outgoing_by_id(self._para_id)
@para_obj.setter
def para_obj(self, value):
- assert value is None and self.original
- try:
- self._para_id
- except AttributeError:
- pass
+ assert self.original
+ if value is None:
+ self._rpdb.cur.execute("DELETE FROM outgoing WHERE id IN (SELECT replacement FROM incoming WHERE id = ?)",
+ (self.rowid,))
+ try:
+ del self._para_id
+ except AttributeError:
+ pass
else:
- self._rpdb.cur.execute("DELETE FROM outgoing WHERE id = ?", (self.rowid,))
- del self._para_id
+ assert isinstance(value.rowid, int)
+ self._rpdb.cur.execute("UPDATE incoming SET replacement = ? WHERE id = ?", (value.rowid, self.rowid))
+ self._para_id = value.rowid
@property
def orig_obj(self):
@@ -322,7 +323,7 @@ class DER_object_mixin(object):
try:
self._orig_id
except AttributeError:
- self._rpdb.cur.execute("SELECT original FROM outgoing WHERE id = ?", (self.rowid,))
+ self._rpdb.cur.execute("SELECT id FROM incoming WHERE replacement = ?", (self.rowid,))
r = self._rpdb.cur.fetchone()
if r is None:
return None
@@ -409,6 +410,10 @@ class RPDB(object):
REFERENCES keyname(id)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
+ replacement INTEGER
+ REFERENCES outgoing(id)
+ ON DELETE SET NULL
+ ON UPDATE SET NULL,
UNIQUE (der),
CHECK ((subject IS NULL) == (fn2 == 'crl')));
@@ -426,12 +431,7 @@ class RPDB(object):
issuer INTEGER
REFERENCES keyname(id)
ON DELETE RESTRICT
- ON UPDATE RESTRICT,
- original INTEGER
- REFERENCES incoming(id)
- ON DELETE CASCADE
- ON UPDATE CASCADE,
- CHECK (original IS NOT NULL OR der IS NOT NULL));
+ ON UPDATE RESTRICT);
CREATE TABLE uri (
id INTEGER NOT NULL
@@ -633,9 +633,14 @@ class RPDB(object):
subject_id = self.find_keyname(subject, ski)
issuer_id = self.find_keyname(issuer, aki)
- self.cur.execute("INSERT INTO outgoing (der, fn2, subject, issuer, original, uri) "
- "VALUES (?, 'cer', ?, ?, ?, ?)",
- (der, subject_id, issuer_id, obj.rowid, uri))
+ self.cur.execute("INSERT INTO outgoing (der, fn2, subject, issuer, uri) "
+ "VALUES (?, 'cer', ?, ?, ?)",
+ (der, subject_id, issuer_id, uri))
+ rowid = self.cur.lastrowid
+ self.cur.execute("UPDATE incoming SET replacement = ? WHERE id = ?",
+ (rowid, obj.rowid))
+
+ # Fix up _orig_id and _para_id here? Maybe later.
#self.db.commit()