Specs for the backup api

This commit is contained in:
Maas-Maarten Zeeman
2022-05-29 17:19:04 +02:00
parent 331579e8dc
commit 540bd64263
4 changed files with 27 additions and 9 deletions

View File

@@ -943,7 +943,7 @@ esqlite_backup_step(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
int rc = sqlite3_backup_step(backup->backup, n_page);
if(rc == SQLITE_DONE) {
return make_atom(env, "done");
return make_atom(env, "$done");
}
if(rc != SQLITE_OK) {

View File

@@ -430,22 +430,28 @@ backup_init(#esqlite3{db=Dest}, DestName, #esqlite3{db=Src}, SrcName) ->
end.
%% @doc Release the resources held by the backup.
-spec backup_finish(esqlite3_backup()) -> ok | {error, _}.
-spec backup_finish(Backup) -> Result when
Backup :: esqlite3_backup(),
Result :: ok | error().
backup_finish(#esqlite3_backup{backup=Backup}) ->
esqlite3_nif:backup_finish(Backup).
%% @doc Do a backup step.
-spec backup_step(esqlite3_backup(), integer()) -> ok | {error, _}.
-spec backup_step(esqlite3_backup(), integer()) -> ok | '$done' | error().
backup_step(#esqlite3_backup{backup=Backup}, NPage) ->
esqlite3_nif:backup_step(Backup, NPage).
%% @doc Get the remaining number of pages which need to be backed up.
-spec backup_remaining(esqlite3_backup()) -> pos_integer().
-spec backup_remaining(Backup) -> Remaining when
Backup :: esqlite3_backup(),
Remaining :: integer().
backup_remaining(#esqlite3_backup{backup=Backup}) ->
esqlite3_nif:backup_remaining(Backup).
%% @doc Get the remaining number of pages which need to be backed up.
-spec backup_pagecount(esqlite3_backup()) -> pos_integer().
-spec backup_pagecount(Backup) -> Pagecount when
Backup :: esqlite3_backup(),
Pagecount :: integer().
backup_pagecount(#esqlite3_backup{backup=Backup}) ->
esqlite3_nif:backup_pagecount(Backup).

View File

@@ -224,25 +224,37 @@ column_decltypes(_Stmt) ->
%% @doc Initialize a backup procedure of a database.
% erlang:nif_error(nif_library_not_loaded).
-spec backup_init(Destination, DestinationName, Source, SourceName) -> InitResult when
Destination :: esqlite3_ref(),
DestinationName :: iodata(),
Source :: esqlite3_ref(),
SourceName :: iodata(),
InitResult :: {ok, esqlite3_backup_ref()} | {error, _}.
InitResult :: {ok, esqlite3_backup_ref()} | error().
backup_init(_Dest, _DestName, _Src, _SrcName) ->
erlang:nif_error(nif_library_not_loaded).
-spec backup_remaining(Backup) -> Remaining when
Backup :: esqlite3_backup_ref(),
Remaining :: integer().
backup_remaining(_Backup) ->
erlang:nif_error(nif_library_not_loaded).
-spec backup_pagecount(Backup) -> Pagecount when
Backup :: esqlite3_backup_ref(),
Pagecount :: integer().
backup_pagecount(_Backup) ->
erlang:nif_error(nif_library_not_loaded).
-spec backup_step(Backup, NPage) -> Result when
Backup :: esqlite3_backup_ref(),
NPage :: integer(),
Result :: ok | '$done' | error().
backup_step(_Backup, _PageCount) ->
erlang:nif_error(nif_library_not_loaded).
-spec backup_finish(Backup) -> Result when
Backup :: esqlite3_backup_ref(),
Result :: ok | error().
backup_finish(_Backup) ->
erlang:nif_error(nif_library_not_loaded).

View File

@@ -430,7 +430,7 @@ backup_test() ->
0 = esqlite3:backup_remaining(Backup),
0 = esqlite3:backup_pagecount(Backup),
done = esqlite3:backup_step(Backup, 1),
'$done' = esqlite3:backup_step(Backup, 1),
cleanup(),
@@ -467,7 +467,7 @@ backup1_test() ->
27 = esqlite3:backup_pagecount(Backup),
%% Do all the remaining pages.
done = esqlite3:backup_step(Backup, -1),
'$done' = esqlite3:backup_step(Backup, -1),
0 = esqlite3:backup_remaining(Backup),
27 = esqlite3:backup_pagecount(Backup),