Go to file
2026-09-05 05:07:38 +08:00
tests chore: freeze verified etaf-sqlite baseline before C1b 2026-09-05 05:07:38 +08:00
.gitignore feat(sqlite): add concrete data source 2026-08-05 06:59:23 +08:00
etaf-sqlite.el chore: freeze verified etaf-sqlite baseline before C1b 2026-09-05 05:07:38 +08:00
Makefile chore(etaf-sqlite): switch renderer path to ebox 2026-08-05 09:15:50 +08:00
README.md chore: freeze verified etaf-sqlite baseline before C1b 2026-09-05 05:07:38 +08:00
README.zh-CN.md chore: freeze verified etaf-sqlite baseline before C1b 2026-09-05 05:07:38 +08:00

etaf-sqlite

etaf-sqlite is the concrete SQLite storage package for ETAF. It adapts Emacs' built-in SQLite support to the core etaf-data-source capability contract. The Data Controller remains in etaf; this package owns only schema validation, short-lived connections, pagination queries, and synchronous mutations.

(require 'etaf-sqlite)

(let* ((table (etaf-sqlite-table
               'items
               (list (etaf-sqlite-column :id "id" :type 'integer :primary t)
                     (etaf-sqlite-column :name "name" :type 'text))
               :id))
       (database (etaf-sqlite-database "~/items.sqlite" table))
       (source (etaf-sqlite-source database)))
  (etaf-sqlite-initialize database)
(etaf-data-controller source :auto-load t))

The source keeps the legacy :mutate callback by default. The additive commit-certified wrapper is opt-in: use (etaf-sqlite-source database :mutate-v2 t) when a controller needs explicit commit/rollback certainty and read-only reconciliation.

Other databases, REST services, files, and ORMs should implement the same source capability in their own packages; they do not belong in ETAF core or in a generic etaf-adapters layer.

Run make check EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs from this directory.