From: Michael Tremer Date: Fri, 6 Oct 2017 16:30:56 +0000 (+0100) Subject: Simplify settings X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d905f826f2a5ad912d528ceac04d088ae9bebd3a;p=people%2Fjschlag%2Fpbs.git Simplify settings Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/settings.py b/src/buildservice/settings.py index db1a6a0..5656c71 100644 --- a/src/buildservice/settings.py +++ b/src/buildservice/settings.py @@ -1,42 +1,14 @@ #!/usr/bin/python -import time - from . import base -from . import cache class Settings(base.Object): - def __init__(self, pakfire): - base.Object.__init__(self, pakfire) - - self.next_update = 0 - - @property - def data(self): - now = time.time() - - # Update the cache if no data is available or the data - # has timed out. - if not hasattr(self, "_data") or now >= self.next_update: - self._data = self.fetch_everything() - self.next_update = now + 300 - - return self._data - - def fetch_everything(self): - res = self.db.query("SELECT k, v FROM settings") - - ret = {} - for row in res: - ret[row.k] = row.v - - return ret - def get(self, key, default=None): - try: - return self.data[key] - except KeyError: - return default + res = self.db.get("SELECT v FROM settings WHERE k = %s", key) + if res: + return res.v + + return default def get_int(self, key, default=None): value = self.get(key, default) @@ -55,7 +27,6 @@ class Settings(base.Object): return None def set(self, key, value): - self.db.execute("REPLACE INTO settings(k, v) VALUES(%s, %s)", key, value) - - if hasattr(self, "_data"): - self._data[key] = value + self.db.execute("INSERT INTO settings(k, v) VALUES(%s, %s) \ + ON CONFLICT (k) DO UPDATE v = excluded.v WHERE k = excluded.k", + key, value) \ No newline at end of file