Sort posts by creation date, most recent first

This commit is contained in:
arne 2025-11-18 20:20:10 +01:00
commit 54d35961d1
2 changed files with 26 additions and 11 deletions

View file

@ -21,25 +21,34 @@
(.addEventListener "upgradeneeded"
(fn [ev]
(let [db (.-result request)
old-version (.-oldVersion ev)]
old-version (.-oldVersion ev)
txn (-> ev .-target .-transaction)]
(js/console.log ::upgradeneeded ev db)
(doseq [version (range (inc old-version) (inc db-version))
:let [migration (migrations version)]]
(migration db)))))
(migration db txn)))))
; we don't add a listener for "blocked" events because we handle "versionchange" above
(.addEventListener "error" (fn [ev] (reject (.-result request) ev))))))))
(defn open-store
([db store-id]
(open-store db store-id "readonly"))
([db store-id permissions]
([db-or-txn store-id]
(open-store db-or-txn store-id "readonly"))
([db-or-txn store-id permissions]
(let [store-id (str store-id) ; simplifies using keywords as store identifiers
txn (.transaction db store-id permissions)]
txn (if (instance? js/IDBTransaction db-or-txn)
db-or-txn
(.transaction db-or-txn store-id permissions))]
(.objectStore txn store-id))))
(defn create-object-store! [db store-id key-opts]
(.createObjectStore db (str store-id) (clj->js key-opts)))
(defn create-index!
([store idx-name fields]
(create-index! store idx-name fields {}))
([store idx-name fields opts]
(.createIndex store (str idx-name) (clj->js fields) (clj->js opts))))
(defn- promisify [request]
(js/Promise. (fn [resolve reject]
(doto request
@ -70,7 +79,10 @@
([store-id key-range] (open-cursor! store-id key-range "next"))
([store-id key-range direction]
(let [store (open-store @+db+ store-id)]
(.openCursor store key-range direction))))
(.openCursor store key-range direction)))
([store-id idx-name key-range direction]
(let [store (open-store @+db+ store-id)]
(.openCursor (.index store (str idx-name)) key-range direction))))
#_(defn logging [f]
(let [n (volatile! 0)]