erlang_migrate_driver behaviour (erlang_migrate v0.3.4)

View Source

驱动 behaviour 契约 / Driver contract — 各数据库驱动实现同一组回调(ensure_table/lock/set_version 等)。

Summary

Callbacks

applied_versions(Conn, HistTable)

(optional)
-callback applied_versions(Conn :: term(), HistTable :: binary()) -> {ok, [integer()]} | {error, term()}.

current_version(Conn, Table)

-callback current_version(Conn :: term(), Table :: binary()) ->
                             {ok, integer() | undefined, boolean()} | {error, term()}.

drop_table(Conn, Table)

-callback drop_table(Conn :: term(), Table :: binary()) -> ok | {error, term()}.

ensure_table(Conn, Table)

-callback ensure_table(Conn :: term(), Table :: binary()) -> ok | {error, term()}.

exec_sql(Conn, SQL)

-callback exec_sql(Conn :: term(), SQL :: binary()) -> ok | {error, term()}.

is_dirty(Conn, Table)

-callback is_dirty(Conn :: term(), Table :: binary()) -> {ok, boolean()} | {error, term()}.

lock(Conn, LockId, TimeoutMs)

-callback lock(Conn :: term(), LockId :: integer(), TimeoutMs :: integer()) ->
                  ok | {error, lock_timeout} | {error, term()}.

set_version(Conn, Table, Version, Dirty)

-callback set_version(Conn :: term(),
                      Table :: binary(),
                      Version :: integer() | undefined,
                      Dirty :: boolean()) ->
                         ok | {error, term()}.

unlock(Conn, LockId)

-callback unlock(Conn :: term(), LockId :: integer()) -> ok.