mysql.erl 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. %% @doc MySQL/OTP
  2. -module(mysql).
  3. -export([connect/1, disconnect/1, query/2, query/3, prepare/2, warning_count/1,
  4. affected_rows/1, insert_id/1]).
  5. %% @doc A MySQL error with the codes and message returned from the server.
  6. -type reason() :: {Code :: integer(), SQLState :: binary(),
  7. Message :: binary()}.
  8. -spec connect(list()) -> {ok, pid()} | ignore | {error, term()}.
  9. connect(Opts) ->
  10. gen_server:start_link(mysql_connection, Opts, []).
  11. -spec disconnect(pid()) -> ok.
  12. disconnect(Conn) ->
  13. exit(Conn, normal),
  14. ok.
  15. -spec query(Conn, Query) -> ok | {ok, Fields, Rows} | {error, Reason}
  16. when Conn :: pid(),
  17. Query :: iodata(),
  18. Fields :: [binary()],
  19. Rows :: [[term()]],
  20. Reason :: reason().
  21. query(Conn, Query) ->
  22. gen_server:call(Conn, {query, Query}).
  23. %% @doc Executes a prepared statement.
  24. query(Conn, StatementId, Args) ->
  25. gen_server:call(Conn, {query, StatementId, Args}).
  26. -spec prepare(Conn :: pid(), Query :: iodata()) ->
  27. {ok, StatementId :: integer()} | {error, Reason :: reason()}.
  28. prepare(Conn, Query) ->
  29. gen_server:call(Conn, {prepare, Query}).
  30. -spec warning_count(pid()) -> integer().
  31. warning_count(Conn) ->
  32. gen_server:call(Conn, warning_count).
  33. -spec affected_rows(pid()) -> integer().
  34. affected_rows(Conn) ->
  35. gen_server:call(Conn, affected_rows).
  36. -spec insert_id(pid()) -> integer().
  37. insert_id(Conn) ->
  38. gen_server:call(Conn, insert_id).