From 69b47fc974480abcfc66bec2a5c19dde2460ae86 Mon Sep 17 00:00:00 2001 From: Maas-Maarten Zeeman Date: Sat, 31 Dec 2011 17:19:00 +0100 Subject: [PATCH] moving around sources --- src/edbc.hrl | 4 -- src/esqlite.app.src | 2 +- src/gen_db.erl | 78 ------------------------------------- src/sqlite.erl | 95 --------------------------------------------- 4 files changed, 1 insertion(+), 178 deletions(-) delete mode 100644 src/edbc.hrl delete mode 100644 src/gen_db.erl delete mode 100644 src/sqlite.erl diff --git a/src/edbc.hrl b/src/edbc.hrl deleted file mode 100644 index 51582ea..0000000 --- a/src/edbc.hrl +++ /dev/null @@ -1,4 +0,0 @@ -%% -%% - --record(edbc_column_info, {name, type, default, notnull, pk}). diff --git a/src/esqlite.app.src b/src/esqlite.app.src index dc27be4..48c7bfb 100644 --- a/src/esqlite.app.src +++ b/src/esqlite.app.src @@ -2,7 +2,7 @@ [ {description, "sqlite nif interface"}, {vsn, "1"}, - {modules, [esqlite]}, + {modules, [esqlite, esqlite_nif]}, {registered, []}, {applications, [ kernel, diff --git a/src/gen_db.erl b/src/gen_db.erl deleted file mode 100644 index a2e9105..0000000 --- a/src/gen_db.erl +++ /dev/null @@ -1,78 +0,0 @@ -%% -%% Generic database interface. Sort of... -%% -%% - --module(gen_db). - --export([behaviour_info/1]). - --export([open/2, close/1, run/2, run/3, execute/2, execute/3, commit/1, rollback/1, tables/1, describe_table/2, column_names/2]). - --include("edbc.hrl"). - -behaviour_info(callbacks) -> - [{open, 1}, - {close, 1}, - {commit, 1}, - {rollback, 1}, - {run, 3}, - {execute, 3}, - {tables, 1}, - {describe_table, 2}]; -behaviour_info(_Other) -> - undefined. - --record(connection, {driver, connection_data}). - -%% @doc Open a connection to a new database -%% -open(Driver, Args) -> - {ok, ConnectionData} = Driver:open(Args), - {ok, #connection{driver=Driver, connection_data=ConnectionData}}. - -%% @doc Close a database connection. -%% -close(#connection{driver=Driver, connection_data=Data}) -> - Driver:close(Data). - -%% @doc Commit all changes -commit(#connection{driver=Driver, connection_data=Data}) -> - Driver:commit(Data). - -%% @doc Rollback all changes -rollback(#connection{driver=Driver, connection_data=Data}) -> - Driver:rollback(Data). - -%% @doc Return a list with tablenames... -tables(#connection{driver=Driver, connection_data=Data}) -> - Driver:tables(Data). - -%% @doc -describe_table(TableName, #connection{driver=Driver, connection_data=Data}) -> - Driver:describe_table(TableName, Data). - -%% @doc -column_names(TableName, Connection) -> - [Info#edbc_column_info.name || Info <- describe_table(TableName, Connection) ]. - - -%% @doc Execute the statement, without returning results. -run(Sql, Connection) -> - run(Sql, [], Connection). - -run(Sql, Params, #connection{driver=Driver, connection_data=Data}) -> - Driver:run(Sql, Params, Data). - -%% @doc Execute the statement, return the result -execute(Sql, Connection) -> - execute(Sql, [], Connection). - -execute(Sql, Params, #connection{driver=Driver, connection_data=Data}) -> - Driver:execute(Sql, Params, Data). - - - - - - diff --git a/src/sqlite.erl b/src/sqlite.erl deleted file mode 100644 index b1baf5e..0000000 --- a/src/sqlite.erl +++ /dev/null @@ -1,95 +0,0 @@ -%% -%% Exploring making a database driver for the generic gen_db interface -%% - --module(sqlite). - --include("edbc.hrl"). - --behaviour(gen_db). - --export([open/1, run/3, execute/3, close/1, commit/1, rollback/1, tables/1, describe_table/2]). - -%% @doc Open a database connection -%% -open([DatabaseName]) -> - {ok, C} = esqlite3:open(DatabaseName), - ok = esqlite3:exec(<<"BEGIN TRANSACTION;">>, C), - {ok, C}. - - -%% @doc Close the connection -%% -close(Connection) -> - ok = esqlite3:close(Connection). - -%% @doc -%% -run(Sql, [], Connection) -> - case esqlite3:exec(Sql, Connection) of - {error, Error} -> {error, ?MODULE, Error}; - ok -> ok - end; -run(Sql, Args, Connection) -> - case esqlite3:prepare(Sql, Connection) of - {error, Error} -> - {error, ?MODULE, Error}; - {ok, Stmt} -> - case esqlite3:bind(Stmt, Args) of - {error, Error} -> {error, ?MODULE, Error}; - ok -> - case esqlite3:fetchone(Stmt) of - {error, Error} -> {error, ?MODULE, Error}; - _ -> ok - end - end - end. - -%% @doc Execute a query and return the results -%% -execute(Sql, [], Connection) -> - case esqlite3:prepare(Sql, Connection) of - {error, Error} -> - {error, ?MODULE, Error}; - {ok, Stmt} -> - {ok, esqlite3:column_names(Stmt), esqlite3:fetchall(Stmt)} - end; -execute(Sql, Args, Connection) -> - case esqlite3:prepare(Sql, Connection) of - {error, Error} -> - {error, ?MODULE, Error}; - {ok, Stmt} -> - case esqlite3:bind(Stmt, Args) of - ok -> - Names = esqlite3:column_names(Stmt), - Result = esqlite3:fetchall(Stmt), - {ok, Names, Result}; - {error, Error} -> - {error, ?MODULE, Error} - end - end. - -%% -commit(Connection) -> - ok = run(<<"COMMIT;">>, [], Connection). - -%% -rollback(Connection) -> - ok = run(<<"ROLLBACK;">>, [], Connection). - -%% -tables(Connection) -> - esqlite3:map(fun({TableName}) -> list_to_atom(TableName) end, - <<"SELECT name FROM sqlite_master WHERE type='table' ORDER by name;">>, Connection). - -%% -describe_table(TableName, Connection) when is_atom(TableName) -> - esqlite3:map(fun({_Cid, ColumnName, ColumnType, NotNull, Default, PrimaryKey}) -> - #edbc_column_info{name=list_to_atom(ColumnName), - type=ColumnType, - default=Default, - notnull=NotNull =/= 0, - pk=PrimaryKey =/= 0} - end, - [<<"PRAGMA table_info('">>, atom_to_list(TableName), <<"');">>], Connection). -