Formatting

This commit is contained in:
Alexey Romanov
2010-12-06 19:19:26 +03:00
parent ee13fe6970
commit a6fa7aef21
2 changed files with 54 additions and 46 deletions

View File

@@ -51,7 +51,6 @@
-type result() :: {'ok', pid()} | 'ignore' | {'error', any()}.
-spec start_link(atom()) -> result().
start_link(Db) ->
open(Db, []).
@@ -314,7 +313,7 @@ write_many(Db, Tbl, Data) ->
%%--------------------------------------------------------------------
-spec update(atom(), {atom(), sql_value()}, [{atom(), sql_value()}]) -> sql_non_query_result().
update(Tbl, {Key, Value}, Data) ->
update(?MODULE, Tbl, {Key, Value}, Data).
update(?MODULE, Tbl, {Key, Value}, Data).
%%--------------------------------------------------------------------
%% @spec update(Db :: atom(), Tbl :: atom(), Key :: atom(), Value, Data) -> sql_non_query_result()
@@ -389,7 +388,7 @@ read(Db, Tbl, {Column, Value}) ->
%%--------------------------------------------------------------------
-spec read(atom(), atom(), {atom(), sql_value()}, [atom()]) -> sql_result().
read(Db, Tbl, {Key, Value}, Columns) ->
gen_server:call(Db, {read, Tbl, Key, Value, Columns}).
gen_server:call(Db, {read, Tbl, Key, Value, Columns}).
%%--------------------------------------------------------------------
%% @spec delete(Tbl :: atom(), Key) -> any()
@@ -536,16 +535,16 @@ init(Options) ->
DbFile = proplists:get_value(file, Options),
PrivDir = get_priv_dir(),
case erl_ddll:load(PrivDir, atom_to_list(?DRIVER_NAME)) of
ok ->
Port = open_port({spawn, create_port_cmd(DbFile)}, [binary]),
{ok, #state{port = Port, ops = Options}};
{error, permanent} -> %% already loaded!
Port = open_port({spawn, create_port_cmd(DbFile)}, [binary]),
{ok, #state{port = Port, ops = Options}};
{error, Error} ->
Msg = io_lib:format("Error loading ~p: ~s",
[?DRIVER_NAME, erl_ddll:format_error(Error)]),
{stop, lists:flatten(Msg)}
ok ->
Port = open_port({spawn, create_port_cmd(DbFile)}, [binary]),
{ok, #state{port = Port, ops = Options}};
{error, permanent} -> %% already loaded!
Port = open_port({spawn, create_port_cmd(DbFile)}, [binary]),
{ok, #state{port = Port, ops = Options}};
{error, Error} ->
Msg = io_lib:format("Error loading ~p: ~s",
[?DRIVER_NAME, erl_ddll:format_error(Error)]),
{stop, lists:flatten(Msg)}
end.
%%--------------------------------------------------------------------
@@ -737,31 +736,33 @@ do_sql_bind_and_exec(SQL, Params, #state{port = Port}) ->
exec(Port, {sql_bind_and_exec, SQL, Params}).
exec(_Port, {create_function, _FunctionName, _Function}) ->
error_logger:error_report([{application, sqlite3}, "NOT IMPL YET"]);
%port_control(Port, ?SQL_CREATE_FUNCTION, list_to_binary(Cmd)),
%wait_result(Port);
error_logger:error_report([{application, sqlite3}, "NOT IMPL YET"]);
%port_control(Port, ?SQL_CREATE_FUNCTION, list_to_binary(Cmd)),
%wait_result(Port);
exec(Port, {sql_exec, Cmd}) ->
port_control(Port, ?SQL_EXEC_COMMAND, Cmd),
wait_result(Port);
port_control(Port, ?SQL_EXEC_COMMAND, Cmd),
wait_result(Port);
exec(Port, {sql_bind_and_exec, SQL, Params}) ->
Bin = term_to_binary({iolist_to_binary(SQL), Params}),
port_control(Port, ?SQL_BIND_AND_EXEC_COMMAND, Bin),
wait_result(Port).
Bin = term_to_binary({iolist_to_binary(SQL), Params}),
port_control(Port, ?SQL_BIND_AND_EXEC_COMMAND, Bin),
wait_result(Port).
wait_result(Port) ->
receive
{Port, error, Code, Reason} ->
error_logger:error_msg("sqlite3 driver error: ~s~n", [Reason]),
% ?dbg("Error: ~p~n", [Reason]),
{error, Code, Reason};
{Port, Reply} ->
% ?dbg("Reply: ~p~n", [Reply]),
Reply;
{'EXIT', Port, Reason} ->
error_logger:error_msg("sqlite3 driver port closed with reason ~p~n", [Reason]),
% ?dbg("Error: ~p~n", [Reason]),
{error, -1, Reason}
end.
receive
{Port, error, Code, Reason} ->
error_logger:error_msg("sqlite3 driver error: ~s~n",
[Reason]),
% ?dbg("Error: ~p~n", [Reason]),
{error, Code, Reason};
{Port, Reply} ->
% ?dbg("Reply: ~p~n", [Reply]),
Reply;
{'EXIT', Port, Reason} ->
error_logger:error_msg("sqlite3 driver port closed with reason ~p~n",
[Reason]),
% ?dbg("Error: ~p~n", [Reason]),
{error, -1, Reason}
end.
parse_table_info(Info) ->
[_, Tail] = string:tokens(Info, "()"),

View File

@@ -168,11 +168,11 @@ bin_to_hex(Binary) -> << <<(half_byte_to_hex(X)):8>> || <<X:4>> <= Binary>>.
%%--------------------------------------------------------------------
-spec update_set_sql([{atom(), sql_value()}]) -> iolist().
update_set_sql(Data) ->
ColValueToSqlFun =
fun({Col, Value}) ->
[atom_to_list(Col), " = ", value_to_sql(Value)]
end,
map_intersperse(ColValueToSqlFun, Data, ", ").
ColValueToSqlFun =
fun({Col, Value}) ->
[atom_to_list(Col), " = ", value_to_sql(Value)]
end,
map_intersperse(ColValueToSqlFun, Data, ", ").
%%--------------------------------------------------------------------
%% @spec read_cols_sql(Columns::[atom()]) -> iolist()
@@ -182,7 +182,7 @@ update_set_sql(Data) ->
%%--------------------------------------------------------------------
-spec read_cols_sql([atom()]) -> iolist().
read_cols_sql(Columns) ->
map_intersperse(fun atom_to_list/1, Columns, ", ").
map_intersperse(fun atom_to_list/1, Columns, ", ").
%%--------------------------------------------------------------------
%% @spec create_table_sql(Tbl :: atom(), ColumnData) -> iolist()
@@ -356,7 +356,8 @@ sql_number(NumberStr) ->
-spec sql_string(string()) -> binary().
sql_string(StringWithEscapedQuotes) ->
Res1 = re:replace(StringWithEscapedQuotes, "''", "'", [global, {return, binary}]),
Res1 = re:replace(StringWithEscapedQuotes, "''", "'",
[global, {return, binary}]),
binary_part(Res1, 0, byte_size(Res1) - 1).
-spec sql_blob(string()) -> binary().
@@ -386,8 +387,12 @@ constraint_sql(Constraint) ->
-spec table_constraint_sql(any()) -> iolist().
table_constraint_sql(TableConstraint) ->
case TableConstraint of
{primary_key, Columns} -> ["PRIMARY KEY(", map_intersperse(fun indexed_column_sql/1, Columns, ", "), ")"];
{unique, Columns} -> ["UNIQUE(", map_intersperse(fun indexed_column_sql/1, Columns, ", "), ")"]
{primary_key, Columns} ->
["PRIMARY KEY(",
map_intersperse(fun indexed_column_sql/1, Columns, ", "), ")"];
{unique, Columns} ->
["UNIQUE(",
map_intersperse(fun indexed_column_sql/1, Columns, ", "), ")"]
%% TODO: foreign key
end.
@@ -409,8 +414,8 @@ indexed_column_sql(ColumnName) -> atom_to_list(ColumnName).
-ifdef(TEST).
-include_lib("eunit/include/eunit.hrl").
-define(FLAT(X), iolist_to_binary(X)).
-define(assertFlat(Expected, Value), ?assertEqual(iolist_to_binary(Expected), iolist_to_binary(Value))).
-define(assertFlat(Expected, Value),
?assertEqual(iolist_to_binary(Expected), iolist_to_binary(Value))).
quote_test() ->
?assertFlat("'abc'", value_to_sql("abc")),
@@ -422,7 +427,9 @@ create_table_sql_test() ->
create_table_sql(user, [{id, integer, [primary_key]}, {name, text}])),
?assertFlat(
"CREATE TABLE user (id INTEGER, name TEXT, PRIMARY KEY(id));",
create_table_sql(user, [{id, integer}, {name, text}], [{primary_key, [id]}])).
create_table_sql(user,
[{id, integer}, {name, text}],
[{primary_key, [id]}])).
update_sql_test() ->
?assertFlat(