Module Fun_sql.Make

Parameters

module Sql : Sql

Signature

Higher-level utilities that work across supported DBs

type db = Sql.db
type arg = Sql.arg
exception Bad_migration of string
val migrate : db -> string -> unit

migrate db dir applies the SQL migration scripts in dir on the given database db, keeping track of those that have already been applied.

To apply the migrations in the correct order, the migration scripts must be given filenames that are sorted in lexicographical order of the desired migration order, e.g. 0000_0001_init.sql will be applied before 0000_0002_sec.sql, and so on.

Note that this uses exec_script internally, which means the migration scripts must not have trailing semicolons either.

Any files with extensions other than .sql are ignored.

  • raises Bad_migration

    an error occurs during applying the migrations.

val transaction : db -> (unit -> 'r) -> 'r

transaction db f runs f () inside a transaction in the db. If the operation succeeds, it commits the transaction and returns its result. If it fails with an exception, it rolls back the transaction and re-raises the exception.