Skip to content

Commit 557976c

Browse files
committed
Cover Driver operations with Telemetry events
1 parent 36ab499 commit 557976c

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

lib/feeb/db/sqlite.ex

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ defmodule Feeb.DB.SQLite do
1313

1414
@default_chunk_size 50
1515

16-
def open(path) when is_binary(path), do: Driver.open(path)
16+
def open(path) when is_binary(path), do: traced_driver_operation(:open, [path])
1717

18-
def close(conn), do: Driver.close(conn)
18+
def close(conn), do: traced_driver_operation(:close, [conn])
1919

20-
def exec(conn, sql), do: Driver.execute(conn, sql)
20+
def exec(conn, sql), do: traced_driver_operation(:execute, [conn, sql])
2121

2222
def raw(conn, sql) do
2323
with {:ok, stmt} <- prepare(conn, sql) do
@@ -35,15 +35,15 @@ defmodule Feeb.DB.SQLite do
3535

3636
# TODO: What is the error type? Add typespecs and review Repo code
3737
def prepare(conn, sql) do
38-
Driver.prepare(conn, sql)
38+
traced_driver_operation(:prepare, [conn, sql])
3939
end
4040

4141
def bind(_, _, []),
4242
do: :ok
4343

4444
def bind(stmt, bindings) when is_list(bindings) do
4545
try do
46-
Driver.bind(stmt, bindings)
46+
traced_driver_operation(:bind, [stmt, bindings])
4747
rescue
4848
e in ArgumentError ->
4949
Logger.error(e)
@@ -83,10 +83,16 @@ defmodule Feeb.DB.SQLite do
8383
end
8484

8585
defp step_chunk(conn, stmt, chunk_size) do
86-
case Driver.multi_step(conn, stmt, chunk_size) do
86+
case traced_driver_operation(:multi_step, [conn, stmt, chunk_size]) do
8787
{:rows, rows} -> {:ok, :not_done, rows}
8888
{:done, rows} -> {:ok, :done, rows}
8989
{:error, _} = error -> error
9090
end
9191
end
92+
93+
defp traced_driver_operation(operation, args) do
94+
{duration, result} = :timer.tc(fn -> apply(Driver, operation, args) end)
95+
:telemetry.execute([:feebdb, :driver_op, operation], %{duration: duration}, %{args: args})
96+
result
97+
end
9298
end

0 commit comments

Comments
 (0)