Liking cljdoc? Tell your friends :D

Architecture intro

Read the README first for usage; this sketches the moving parts and where each lives.

      exec! / transact!            (rsqlite.cljc)
            |
      backend/SqliteBackend        (backend.cljc - the seam)
            |                          |                |
   backend/jvm (org.sqlite.jni)   backend/wasm (sqlite-wasm)
            |                          |
      preupdate hook --------+
            |                |
      :pending events    rollback hook (discard)
            |
    autocommit? --schedule--> flush-safe! (serialized per engine)
            |
      flush!  (engine.cljc)
        - resolve column names (off-writer; needs a prepared stmt)
        - coalesce per table (match.cljc)
        - match vs deps (sqldeps.cljc profiles)
        - re-run affected, diff, reset! changed result atoms
  • sql.cljc — instaparse SELECT grammar (parse.y-informed, loose expressions, no opaque blobs: every identifier is captured).
  • sqldeps.cljc — grammar × EQP blend into dependency profiles.
  • match.cljc — pure invalidation rules + changed-cols.
  • engine.cljc — registry, pending/savepoints, flush, delivery.
  • capi.clj / preupdate.clj — the only org.sqlite.jni interop.
  • natives.clj — jar-bundled native extraction and loading.

Can you improve this documentation?Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
←Move to previous article
→Move to next article
Ctrl+/Jump to the search field
× close