From: Michael Tremer Date: Thu, 6 Oct 2022 10:18:36 +0000 (+0000) Subject: keys: Refactor reading them from the database X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fd166efecfd6737ab36169e5e5f5cf6878d7fcf5;p=pbs.git keys: Refactor reading them from the database Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/keys.py b/src/buildservice/keys.py index bde0a842..93e09ba9 100644 --- a/src/buildservice/keys.py +++ b/src/buildservice/keys.py @@ -40,6 +40,28 @@ def read_key(data): class Keys(base.Object): + def _get_keys(self, query, *args): + res = self.db.query(query, *args) + + for row in res: + yield Key(self.backend, row.id, data=row) + + def _get_key(self, query, *args): + res = self.db.get(query, *args) + + if res: + return Key(self.backend, res.id, data=res) + + def __iter__(self): + return self._get_keys(""" + SELECT + * + FROM + keys + ORDER BY + uids + """) + def create(self, data): fingerprint, key = read_key(data) @@ -58,31 +80,21 @@ class Keys(base.Object): return key - def get_all(self): - query = self.db.query("SELECT id FROM keys ORDER BY uids") - - keys = [] - for key in query: - key = Key(self.pakfire, key.id) - keys.append(key) - - return keys - def get_by_id(self, id): - key = self.db.get("SELECT id FROM keys WHERE id = %s", id) - if not key: - return - - return Key(self.pakfire, key.id) + return self._get_key("SELECT * FROM keys WHERE id = %s", id) def get_by_fpr(self, fpr): fpr = "%%%s" % fpr - key = self.db.get("SELECT id FROM keys WHERE fingerprint LIKE %s", fpr) - if not key: - return - - return Key(self.pakfire, key.id) + return self._get_key(""" + SELECT + * + FROM + keys + WHERE + fingerprint LIKE %s + """, fpr, + ) class Key(base.DataObject): diff --git a/src/web/keys.py b/src/web/keys.py index c23354b5..ea8b1fa9 100644 --- a/src/web/keys.py +++ b/src/web/keys.py @@ -48,9 +48,7 @@ class KeysDeleteHandler(KeysActionHandler): class KeysListHandler(base.BaseHandler): def get(self): - keys = self.backend.keys.get_all() - - self.render("keys-list.html", keys=keys) + self.render("keys-list.html", keys=self.backend.keys) class KeysDownloadHandler(base.BaseHandler):