@spec check_migration_files([ %Yacto.Migration.File{ datetime_str: term(), dbname: term(), operation: term(), path: term(), schema_name: term(), version: term() } ]) :: :ok | {:error, [String.t()]}
@spec check_migrations([]) :: :ok | {:error, [String.t()]}
@spec list_migration_files(String.t(), String.t()) :: {[ %Yacto.Migration.File{ datetime_str: term(), dbname: term(), operation: term(), path: term(), schema_name: term(), version: term() } ], [String.t()]}
@spec load_migration_module(String.t(), %Yacto.Migration.File{ datetime_str: term(), dbname: term(), operation: term(), path: term(), schema_name: term(), version: term() }) :: {:ok, module()} | {:error, any()}