clickhouse-migrate-embed: Compile-time embedding for ClickHouse migration definitions

[ bsd3, database, library, program ] [ Propose Tags ] [ Report a vulnerability ]

Compile-time embedding for ClickHouse migration definitions. Validated public APIs with explicit application-owned configuration and scope.


[Skip to Readme]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0
Change log CHANGELOG.md
Dependencies aeson (>=2.2.4.1 && <2.4), base (>=4.21 && <4.22), bytestring (>=0.12.2 && <0.13), clickhouse-migrate (>=0.1 && <0.2), containers (>=0.7 && <0.9), cryptohash-sha256 (>=0.11.102.1 && <0.12), directory (>=1.3.10 && <1.4), filepath (>=1.5.4 && <1.6), process (>=1.6.25 && <1.7), template-haskell (>=2.23 && <2.24), text (>=2.1 && <2.2) [details]
Tested with ghc ==9.12.4
License BSD-3-Clause
Author shinzui
Maintainer shinzui@users.noreply.github.com
Uploaded by shinzui at 2026-10-16T20:11:17Z
Category Database
Source repo head: git clone https://github.com/shinzui/clickhouse-migrate.git(clickhouse-migrate-embed)
Distributions
Executables clickhouse-migrate-embed-build
Downloads 0 total (0 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for clickhouse-migrate-embed-0.1.0.0

[back to package description]

clickhouse-migrate-embed

Compile an ordered package-local JSON manifest and exact SQL bytes into a core MigrationComponent with $(embedComponent "migrations/manifest.json"). Enable TemplateHaskell in the caller. Manifest and path validation fail compilation; generated code uses public core constructors and never reopens source at runtime.

Use the shipped content-qualified build entry point for timestamp-independent Cabal builds, declaring every manifest containing splices:

clickhouse-migrate-embed-build --input path/to/package migrations/manifest.json -- build all

The command also accepts test and haddock, with ordinary Cabal arguments after the command. This preflight is needed because raw Cabal can skip GHC for preserved modification times. The public splice still registers all compiler dependencies.

The workspace's docs/user/contracts/manifest-v1.md defines fields, containment and build guarantees. The source distribution includes fixtures and qualification scripts in test/fixtures/ and test/scripts/; these expect sibling core/embed sources with a cabal.project naming both. No compiler plugin is required.