/** * Utilities for applying Effect SQL migrations to React Native SQLite databases. * * This module re-exports the shared `Migrator` loaders and error types, then * provides `run` and `layer` helpers that execute ordered migrations through the * current React Native SQLite `SqlClient`. Use it when a mobile app needs to * bring its on-device database schema up to date during startup, before opening * repositories or sync services, or in integration tests that create app-local * database files. * * React Native SQLite databases are scoped by the client configuration, so the * migrator should be run with the same `filename`, `location`, and encryption * key as the rest of the application. Migrations run through the package's * single serialized connection; by default statements use the synchronous * driver API and can block the JS thread, so long migration sets may want to run * under `SqliteClient.withAsyncQuery`. Mobile upgrades can be interrupted by app * suspension or process death, so keep migrations transaction-aware and avoid * assuming a fresh database on every launch. * * @since 4.0.0 */ import type * as Effect from "effect/Effect" import * as Layer from "effect/Layer" import * as Migrator from "effect/unstable/sql/Migrator" import type * as Client from "effect/unstable/sql/SqlClient" import type { SqlError } from "effect/unstable/sql/SqlError" /** * @since 4.0.0 */ export * from "effect/unstable/sql/Migrator" /** * Runs SQL migrations for a React Native SQLite database using the shared `Migrator` implementation and the current `SqlClient`. * * @category constructors * @since 4.0.0 */ export const run: ( options: Migrator.MigratorOptions ) => Effect.Effect< ReadonlyArray, SqlError | Migrator.MigrationError, Client.SqlClient | R > = Migrator.make({}) /** * Creates a layer that runs the configured React Native SQLite migrations during layer construction and provides no services. * * @category constructors * @since 4.0.0 */ export const layer = ( options: Migrator.MigratorOptions ): Layer.Layer => Layer.effectDiscard(run(options))