summaryrefslogtreecommitdiffstats
path: root/custodia/store/sqlite.py
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2015-04-07 17:33:28 -0400
committerSimo Sorce <simo@redhat.com>2015-04-07 18:48:31 -0400
commite35d48dbb2362fe06f62e19c2594ef1fdfc4c8c5 (patch)
treecc9fee894edaa9633d900839dee1172c1932e8b6 /custodia/store/sqlite.py
parent5ed4b17854977c38944b8670b2264b2a9d8c2121 (diff)
downloadcustodia-e35d48dbb2362fe06f62e19c2594ef1fdfc4c8c5.tar.gz
custodia-e35d48dbb2362fe06f62e19c2594ef1fdfc4c8c5.tar.xz
custodia-e35d48dbb2362fe06f62e19c2594ef1fdfc4c8c5.zip
Add interface to remove data from store
Diffstat (limited to 'custodia/store/sqlite.py')
-rw-r--r--custodia/store/sqlite.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/custodia/store/sqlite.py b/custodia/store/sqlite.py
index 0ed8223..481313e 100644
--- a/custodia/store/sqlite.py
+++ b/custodia/store/sqlite.py
@@ -76,8 +76,24 @@ class SqliteStore(CSStore):
else:
return None
+ def cut(self, key):
+ query = "DELETE from %s WHERE key=?" % self.table
+ try:
+ conn = sqlite3.connect(self.dburi)
+ with conn:
+ c = conn.cursor()
+ r = c.execute(query, (key,))
+ except sqlite3.Error as err:
+ log_error("Error removing key %s: [%r]" % (key, repr(err)))
+ raise CSStoreError('Error occurred while trying to cut key')
+ if r.rowcount > 0:
+ return True
+ return False
+
import unittest
+
+
class SqliteStoreTests(unittest.TestCase):
@classmethod
@@ -173,3 +189,14 @@ class SqliteStoreTests(unittest.TestCase):
value = self.store.get('key')
self.assertEqual(value, 'replaced')
+
+ def test_6_cut_1(self):
+ self.store.set('keycut', 'value')
+ ret = self.store.cut('keycut')
+ self.assertEqual(ret, True)
+ value = self.store.get('keycut')
+ self.assertEqual(value, None)
+
+ def test_6_cut_2_empty(self):
+ ret = self.store.cut('keycut')
+ self.assertEqual(ret, False)