%% @author Maas-Maarten Zeeman %% @copyright 2011 - 2017 Maas-Maarten Zeeman %% @doc Low level erlang API for sqlite3 databases %% Copyright 2011 - 2017 Maas-Maarten Zeeman %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. %% You may obtain a copy of the License at %% %% http://www.apache.org/licenses/LICENSE-2.0 %% %% Unless required by applicable law or agreed to in writing, software %% distributed under the License is distributed on an "AS IS" BASIS, %% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. %% See the License for the specific language governing permissions and %% limitations under the License. -module(esqlite3_nif). -author("Maas-Maarten Zeeman "). %% low-level exports -export([start/0, open/4, set_update_hook/4, exec/4, changes/3, insert/4, get_autocommit/3, prepare/4, multi_step/5, reset/4, finalize/4, bind/5, column_names/4, column_types/4, close/3 ]). -on_load(init/0). init() -> NifName = "esqlite3_nif", NifFileName = case code:priv_dir(esqlite) of {error, bad_name} -> filename:join("priv", NifName); Dir -> filename:join(Dir, NifName) end, ok = erlang:load_nif(NifFileName, 0). %% @doc Start a low level thread which will can handle sqlite3 calls. %% %% @spec start() -> {ok, connection()} | {error, msg()} start() -> erlang:nif_error(nif_library_not_loaded). %% @doc Open the specified sqlite3 database. %% %% Sends an asynchronous open command over the connection and returns %% ok immediately. When the database is opened %% %% @spec open(connection(), reference(), pid(), string()) -> ok | {error, message()} open(_Db, _Ref, _Dest, _Filename) -> erlang:nif_error(nif_library_not_loaded). set_update_hook(_Db, _Ref, _Dest, _Pid) -> erlang:nif_error(nif_library_not_loaded). %% @doc Exec the query. %% %% Sends an asynchronous exec command over the connection and returns %% ok immediately. %% %% When the statement is executed Dest will receive message {Ref, answer()} %% with answer() integer | {error, reason()} %% %% @spec exec(connection(), Ref::reference(), Dest::pid(), string()) -> ok | {error, message()} exec(_Db, _Ref, _Dest, _Sql) -> erlang:nif_error(nif_library_not_loaded). %% @doc Get the number of affected rows of last statement %% %% When the statement is executed Dest will receive message {Ref, answer()} %% with answer() integer | {error, reason()} %% changes(_Db, _Ref, _Dest) -> erlang:nif_error(nif_library_not_loaded). %% @doc %% %% @spec prepare(connection(), reference(), pid(), string()) -> ok | {error, message()} prepare(_Db, _Ref, _Dest, _Sql) -> erlang:nif_error(nif_library_not_loaded). %% @doc %% %% @spec multi_step(statement(), pos_integer(), reference(), pid()) -> {term(), list(tuple)} | {error, message()} multi_step(_Db, _Stmt, _Chunk_Size, _Ref, _Dest) -> erlang:nif_error(nif_library_not_loaded). %% @doc %% %% @spec reset(statement(), reference(), pid()) -> ok | {error, message()} reset(_Db, _Stmt, _Ref, _Dest) -> erlang:nif_error(nif_library_not_loaded). %% @doc %% %% finalize(_Db, _Stmt, _Ref, _Dest) -> erlang:nif_error(nif_library_not_loaded). %% @doc Bind parameters to a prepared statement. %% %% @spec bind(connection(), statement(), reference(), pid(), []) -> ok | {error, message()} bind(_Db, _Stmt, _Ref, _Dest, _Args) -> erlang:nif_error(nif_library_not_loaded). %% @doc Retrieve the column names of the prepared statement %% %% @spec column_names(connection(), statement(), reference(), pid()) -> {ok, tuple()} | {error, message()} column_names(_Db, _Stmt, _Ref, _Dest) -> erlang:nif_error(nif_library_not_loaded). %% @doc Retrieve the column types of the prepared statement %% %% @spec column_types(connection(), statement(), reference(), pid()) -> {ok, tuple()} | {error, message()} column_types(_Db, _Stmt, _Ref, _Dest) -> erlang:nif_error(nif_library_not_loaded). %% @doc Close the connection. %% %% @spec close(connection(), reference(), pid()) -> ok | {error, message()} close(_Db, _Ref, _Dest) -> erlang:nif_error(nif_library_not_loaded). %% @doc Insert record %% %% @spec insert(connection(), Ref::reference(), Dest::pid(), string()) -> {ok, integer()} | {error, message()} insert(_Db, _Ref, _Dest, _Sql) -> erlang:nif_error(nif_library_not_loaded). %% @doc Get automcommit %% %% @spec get_autocommit(connection(), Ref::reference(), Dest::pid()) -> true | false get_autocommit(_Db, _Ref, _Dest) -> erlang:nif_error(nif_library_not_loaded).