Releases: UniSoma/sqlite-migrate
Releases · UniSoma/sqlite-migrate
Release list
v0.1.0
First fixed release. The earlier 0.1.0-SNAPSHOT coordinate was a mutable
pre-release channel used to prove packaging and consumption; it is not a
release, and the notes below do not describe changes relative to it.
Added
- The declarative pipeline:
snapshotintrospects a live SQLite file,
declared-snapshotrealizes a Declaration into a pristine in-memory
database and introspects that,diffcompares the two,plancompiles the
difference into an executable Plan,checkprobes it read-only, and
apply!runs it. - One canonical Snapshot shape for both sides of a comparison, produced only
by introspection, so a declared schema and a live file are never compared
across different representations. - SQL text as the canonical Declaration — a string or a sequence of
statements. No schema DSL is required, and no SQL is parsed: expression
text (CHECK bodies, generated expressions, index expressions, partial
WHERE clauses, DEFAULT spellings) is carried and re-emitted verbatim. - The Diff as a first-class public surface: flat, plain-EDN entries in a
locked deterministic order that survivepr-str/read-string, with
drift?, the presentation-onlydrift-reportrenderer, and the
by-objectregrouping view over them. Ordinary seq functions are the
filtering API. - Plan compilation covering tables, columns, CHECK and UNIQUE constraints,
foreign keys, indexes, triggers, views, and virtual tables — in place when
the target SQLite version and the table's dependents allow it, otherwise as
one generalized table Rebuild that preserves rows,rowid, and the
AUTOINCREMENTcounter. - Refusals with explicit Directives as the override: the planner never infers
a rename, and it will not drop a table or a column holding data without
per-object permission. - Gates — data preconditions surfaced as data for constraints that tighten
(NOT NULL, CHECK, UNIQUE, primary key, foreign key,STRICT,
WITHOUT ROWID) — probed read-only throughcheckandcheck-report. - Atomic Apply: one transaction, all-or-nothing, with a schema-fingerprint
refusal (:drift-refused) raised both bycheckand again from inside the
transaction, leaving no drift window. - The
sqlite-migrate.protocols/SQLiteExecutorseam, whose docstrings are the
normative contract for adapter authors, plus the bundled JDBC adapter
(sqlite-migrate.jdbc/connectandin-memory) built onnext.jdbc. sqlite-migrate.schema/->sql, compiling an EDN Schema value into the same
Declaration statement vector the rest of the pipeline accepts.- GraalVM native-image support: the library compiles into a consumer's native
image, proven by a native-image smoke job in CI. No binary is published. - Documentation: the design write-up, recipes (CI drift check, converge on
startup, stage then swap), and a native-image page, published as cljdoc
articles alongside the API reference.