summaryrefslogtreecommitdiff
path: root/lib/cache.fnl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/cache.fnl')
-rw-r--r--lib/cache.fnl21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/cache.fnl b/lib/cache.fnl
new file mode 100644
index 0000000..b21a05e
--- /dev/null
+++ b/lib/cache.fnl
@@ -0,0 +1,21 @@
+(local {: must} (require :lib.utils))
+
+(fn get [db key else]
+ (local result
+ (must (luna.db.query db "SELECT value FROM cache WHERE key = ?"
+ [key])))
+ (or (if (and result (< 0 (# result)))
+ (. (. result 1) 1)
+ nil)
+ else))
+
+(fn _set [db key value]
+ value
+ (must (luna.db.exec db "INSERT OR REPLACE INTO cache VALUES (?, ?)"
+ [key value]))
+ value)
+
+(fn clear-tx [tx]
+ (must (luna.db.exec-tx tx "DELETE FROM cache" [])))
+
+{: get :set _set : clear-tx}