Skip to content

Commit f3e175f

Browse files
authored
Add typespecs for public functions (#86)
1 parent c0c94fa commit f3e175f

File tree

5 files changed

+20
-1
lines changed

5 files changed

+20
-1
lines changed

lib/error_tracker.ex

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ defmodule ErrorTracker do
6767
"""
6868
@type context :: %{String.t() => any()}
6969

70+
@typedoc """
71+
An `Exception` or a `{kind, payload}` tuple compatible with `Exception.normalize/3`.
72+
"""
73+
@type exception :: Exception.t() | {:error, any()} | {Exception.non_error_kind(), any()}
74+
7075
import Ecto.Query
7176

7277
alias ErrorTracker.Error
@@ -107,6 +112,8 @@ defmodule ErrorTracker do
107112
* A `{kind, exception}` tuple in which case the information is converted to
108113
an Elixir exception (if possible) and stored.
109114
"""
115+
116+
@spec report(exception(), Exception.stacktrace(), context()) :: Occurrence.t() | :noop
110117
def report(exception, stacktrace, given_context \\ %{}) do
111118
{kind, reason} = normalize_exception(exception, stacktrace)
112119
{:ok, stacktrace} = ErrorTracker.Stacktrace.new(stacktrace)
@@ -127,6 +134,7 @@ defmodule ErrorTracker do
127134
If an error is marked as resolved and it happens again, it will automatically
128135
appear as unresolved again.
129136
"""
137+
@spec resolve(Error.t()) :: {:ok, Error.t()} | {:error, Ecto.Changeset.t()}
130138
def resolve(error = %Error{status: :unresolved}) do
131139
changeset = Ecto.Changeset.change(error, status: :resolved)
132140

@@ -139,6 +147,7 @@ defmodule ErrorTracker do
139147
@doc """
140148
Marks an error as unresolved.
141149
"""
150+
@spec unresolve(Error.t()) :: {:ok, Error.t()} | {:error, Ecto.Changeset.t()}
142151
def unresolve(error = %Error{status: :resolved}) do
143152
changeset = Ecto.Changeset.change(error, status: :unresolved)
144153

lib/error_tracker/migration.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,17 @@ defmodule ErrorTracker.Migration do
9696
@callback down(Keyword.t()) :: :ok
9797
@callback current_version(Keyword.t()) :: non_neg_integer()
9898

99+
@spec up(Keyword.t()) :: :ok
99100
def up(opts \\ []) when is_list(opts) do
100101
migrator().up(opts)
101102
end
102103

104+
@spec down(Keyword.t()) :: :ok
103105
def down(opts \\ []) when is_list(opts) do
104106
migrator().down(opts)
105107
end
106108

109+
@spec migrated_version(Keyword.t()) :: non_neg_integer()
107110
def migrated_version(opts \\ []) when is_list(opts) do
108111
migrator().migrated_version(opts)
109112
end

lib/error_tracker/schemas/error.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ defmodule ErrorTracker.Error do
1212

1313
use Ecto.Schema
1414

15+
@type t :: %__MODULE__{}
16+
1517
schema "error_tracker_errors" do
1618
field :kind, :string
1719
field :reason, :string

lib/error_tracker/schemas/occurrence.ex

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ defmodule ErrorTracker.Occurrence do
66
in which the exception raised.
77
"""
88

9+
import Ecto.Changeset
10+
911
use Ecto.Schema
1012

1113
require Logger
12-
import Ecto.Changeset
14+
15+
@type t :: %__MODULE__{}
1316

1417
schema "error_tracker_occurrences" do
1518
field :context, :map

lib/error_tracker/schemas/stacktrace.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ defmodule ErrorTracker.Stacktrace do
66

77
use Ecto.Schema
88

9+
@type t :: %__MODULE__{}
10+
911
@primary_key false
1012
embedded_schema do
1113
embeds_many :lines, Line, primary_key: false do

0 commit comments

Comments
 (0)