packages feed

kiroku-store-migrations-0.3.0.0: src/Kiroku/Store/Migrations/Internal/Definition.hs

{-# LANGUAGE TemplateHaskell #-}
-- GHC 9.12 has no Template Haskell directory-dependency API, so a sibling SQL
-- file that is added or removed without being listed in the manifest leaves this
-- module looking up to date and silently skips manifest membership validation.
-- The plugin forces GHC to reconsider this module on every build it runs.
-- Note this cannot help when no Haskell source changes at all: cabal then
-- reports "Up to date" and never invokes GHC. A clean build revalidates.
{-# OPTIONS_GHC -fplugin=Database.PostgreSQL.Migrate.Embed.RecompilePlugin #-}

module Kiroku.Store.Migrations.Internal.Definition (
    embeddedMigrationEntries,
    kirokuMigrations,
) where

import Data.ByteString (ByteString)
import Data.List.NonEmpty (NonEmpty)
import Database.PostgreSQL.Migrate (
    DefinitionError,
    MigrationComponent,
    migrationComponentFromEmbeddedSql,
 )
import Database.PostgreSQL.Migrate.Embed (embedMigrationManifest)

embeddedMigrationEntries :: NonEmpty (FilePath, ByteString)
embeddedMigrationEntries =
    $(embedMigrationManifest "migrations/manifest")

kirokuMigrations :: Either DefinitionError MigrationComponent
kirokuMigrations =
    migrationComponentFromEmbeddedSql "kiroku" mempty embeddedMigrationEntries