Skip to content

Commit f75f016

Browse files
authored
Merge pull request #17 from rai200890/fix/dialyzer-warning
fix: dialyzer warnings
2 parents 999d915 + c97fee3 commit f75f016

File tree

6 files changed

+68
-52
lines changed

6 files changed

+68
-52
lines changed

.circleci/config.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ jobs:
3131
- run: mix credo --strict
3232
- run: mix do ecto.create, ecto.migrate
3333
- run: mix coveralls.html
34+
- run: MIX_ENV=dev mix dialyzer --plt
3435
- store_artifacts:
3536
path: cover/
3637

@@ -44,4 +45,4 @@ workflows:
4445
branches:
4546
only: /.*/
4647
tags:
47-
only: /.*/
48+
only: /.*/

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,6 @@ erl_crash.dump
2323
ecto_job_scheduler-*.tar
2424
.elixir_ls/*
2525

26+
# Dialyzer
27+
/priv/plts/*.plt
28+
/priv/plts/*.plt.hash

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.2
1+
1.0.4

lib/job.ex

Lines changed: 55 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,59 @@
11
defmodule EctoJobScheduler.Job do
22
@moduledoc """
3-
Defines jobs to be used with EctoJobScheduler.JobQueue and EctoJobScheduler.JobScheduler
3+
Defines jobs to be used with EctoJobScheduler.JobQueue and EctoJobScheduler.JobScheduler.
44
"""
5+
56
alias EctoJobScheduler.JobInfo
67

8+
require Logger
9+
710
@callback handle_job(%JobInfo{}, params :: map()) :: any()
811

12+
def handle_job_result(result, original_multi, repo) do
13+
case result do
14+
%Ecto.Multi{} = multi ->
15+
repo.transaction(multi)
16+
17+
:ok ->
18+
repo.transaction(original_multi)
19+
:ok
20+
21+
{:ok, result} ->
22+
repo.transaction(original_multi)
23+
{:ok, result}
24+
25+
other ->
26+
other
27+
end
28+
end
29+
30+
def handle_job_result(:ok, job_name) do
31+
Logger.info("Successfully executed #{job_name}")
32+
33+
{:ok, :ok}
34+
end
35+
36+
def handle_job_result({:ok, successful_changes}, job_name) do
37+
Logger.info("Successfully executed #{job_name}")
38+
39+
{:ok, successful_changes}
40+
end
41+
42+
def handle_job_result({:error, multi_identifier, reason, successful_changes}, job_name) do
43+
Logger.error("Unable to execute #{job_name}",
44+
multi_identifier: multi_identifier,
45+
error: inspect(reason)
46+
)
47+
48+
{:error, multi_identifier, reason, successful_changes}
49+
end
50+
51+
def handle_job_result({:error, reason}, job_name) do
52+
Logger.error("Unable to execute #{job_name}", error: inspect(reason))
53+
54+
{:error, reason}
55+
end
56+
957
defmacro __using__(options \\ []) do
1058
quote do
1159
require Logger
@@ -34,58 +82,17 @@ defmodule EctoJobScheduler.Job do
3482

3583
Context.put(job_context)
3684

37-
Logger.info("Attempting to run #{inspect(__MODULE__)} #{attempt} out of #{max_attempts}")
38-
39-
case run_job(job_info, params) do
40-
:ok ->
41-
Logger.info("Successfully executed #{inspect(__MODULE__)}")
42-
{:ok, :ok}
43-
44-
{:ok, successful_changes} ->
45-
Logger.info("Successfully executed #{inspect(__MODULE__)}")
46-
47-
{:ok, successful_changes}
48-
49-
{:error, multi_identifier, reason, successful_changes} ->
50-
Logger.error("Unable to execute #{inspect(__MODULE__)}",
51-
multi_identifier: multi_identifier,
52-
error: inspect(reason)
53-
)
54-
55-
{:error, multi_identifier, reason, successful_changes}
85+
job_name = inspect(__MODULE__)
5686

57-
{:error, reason} ->
58-
Logger.error("Unable to execute #{inspect(__MODULE__)}",
59-
error: inspect(reason)
60-
)
87+
Logger.info("Attempting to run #{job_name} #{attempt} out of #{max_attempts}")
6188

62-
{:error, reason}
63-
end
89+
job_info |> run_job(params) |> EctoJobScheduler.Job.handle_job_result(job_name)
6490
end
6591

6692
defp run_job(%JobInfo{multi: original_multi} = job_info, params) do
67-
case handle_job(job_info, params) do
68-
%Ecto.Multi{} = multi ->
69-
config()[:repo].transaction(multi)
70-
71-
result ->
72-
handle_job_result(original_multi, result)
73-
end
74-
end
75-
76-
defp handle_job_result(original_multi, result) do
77-
case result do
78-
:ok ->
79-
config()[:repo].transaction(original_multi)
80-
:ok
81-
82-
{:ok, result} ->
83-
config()[:repo].transaction(original_multi)
84-
{:ok, result}
85-
86-
other ->
87-
other
88-
end
93+
job_info
94+
|> handle_job(params)
95+
|> EctoJobScheduler.Job.handle_job_result(original_multi, config()[:repo])
8996
end
9097

9198
defp sanitizer do

mix.exs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ defmodule EctoJobScheduler.MixProject do
2222
docs: [
2323
main: "readme",
2424
extras: ["README.md"]
25+
],
26+
dialyzer: [
27+
plt_file: {:no_warn, "priv/plts/dialyzer.plt"},
28+
remove_defaults: [:unknown]
2529
]
2630
]
2731
end
@@ -55,7 +59,7 @@ defmodule EctoJobScheduler.MixProject do
5559
{:credo, "~> 1.1", only: [:dev, :test], runtime: false},
5660
{:excoveralls, "~> 0.10", only: :test},
5761
{:ex_doc, "~> 0.14", only: :dev, runtime: false},
58-
{:dialyxir, "~> 0.5", only: [:dev], runtime: false}
62+
{:dialyxir, "~> 1.0", only: [:dev], runtime: false}
5963
]
6064
end
6165
end

mix.lock

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
"credo": {:hex, :credo, "1.1.0", "e0c07b2fd7e2109495f582430a1bc96b2c71b7d94c59dfad120529f65f19872f", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "7338d04b30026e30adbcaaedbf0eb7e4d749510d90c2708ff8cc100fa9c8291f"},
66
"db_connection": {:hex, :db_connection, "2.2.0", "e923e88887cd60f9891fd324ac5e0290954511d090553c415fbf54be4c57ee63", [:mix], [{:connection, "~> 1.0.2", [hex: :connection, repo: "hexpm", optional: false]}], "hexpm", "bdf196feedfa6b83071e808b2b086fb113f8a1c4c7761f6eff6fe4b96aba0086"},
77
"decimal": {:hex, :decimal, "1.8.1", "a4ef3f5f3428bdbc0d35374029ffcf4ede8533536fa79896dd450168d9acdf3c", [:mix], [], "hexpm", "3cb154b00225ac687f6cbd4acc4b7960027c757a5152b369923ead9ddbca7aec"},
8-
"dialyxir": {:hex, :dialyxir, "0.5.1", "b331b091720fd93e878137add264bac4f644e1ddae07a70bf7062c7862c4b952", [:mix], [], "hexpm", "6c32a70ed5d452c6650916555b1f96c79af5fc4bf286997f8b15f213de786f73"},
8+
"dialyxir": {:hex, :dialyxir, "1.0.0", "6a1fa629f7881a9f5aaf3a78f094b2a51a0357c843871b8bc98824e7342d00a5", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "aeb06588145fac14ca08d8061a142d52753dbc2cf7f0d00fc1013f53f8654654"},
99
"earmark": {:hex, :earmark, "1.3.2", "b840562ea3d67795ffbb5bd88940b1bed0ed9fa32834915125ea7d02e35888a5", [:mix], [], "hexpm", "e3be2bc3ae67781db529b80aa7e7c49904a988596e2dbff897425b48b3581161"},
1010
"ecto": {:hex, :ecto, "3.3.1", "82ab74298065bf0c64ca299f6c6785e68ea5d6b980883ee80b044499df35aba1", [:mix], [{:decimal, "~> 1.6", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "e6c614dfe3bcff2d575ce16d815dbd43f4ee1844599a83de1eea81976a31c174"},
1111
"ecto_job": {:hex, :ecto_job, "3.0.0", "ae3da338fce92d58f76dcaa04400678453298c466897b07f775f646ca16ac41a", [:make, :mix], [{:ecto_sql, "~> 3.2", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:gen_stage, "~> 0.14", [hex: :gen_stage, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.15", [hex: :postgrex, repo: "hexpm", optional: false]}], "hexpm", "fe7795aaeab3d81c0381bcf1aad6484b834e468941fa48f64fa897cfba54538c"},
1212
"ecto_sql": {:hex, :ecto_sql, "3.3.2", "92804e0de69bb63e621273c3492252cb08a29475c05d40eeb6f41ad2d483cfd3", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b82d89d4e6a9f7f7f04783b07e8b0af968e0be2f01ee4b39047fe727c5c07471"},
13+
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
1314
"ex_doc": {:hex, :ex_doc, "0.20.2", "1bd0dfb0304bade58beb77f20f21ee3558cc3c753743ae0ddbb0fd7ba2912331", [:mix], [{:earmark, "~> 1.3", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.10", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "8e24fc8ff9a50b9f557ff020d6c91a03cded7e59ac3e0eec8a27e771430c7d27"},
1415
"excoveralls": {:hex, :excoveralls, "0.11.1", "dd677fbdd49114fdbdbf445540ec735808250d56b011077798316505064edb2c", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "493daf5a2dd92d022a1c29e7edcc30f1bce1ffe10fb3690fac63889346d3af2f"},
1516
"gen_stage": {:hex, :gen_stage, "0.14.3", "d0c66f1c87faa301c1a85a809a3ee9097a4264b2edf7644bf5c123237ef732bf", [:mix], [], "hexpm", "8453e2289d94c3199396eb517d65d6715ef26bcae0ee83eb5ff7a84445458d76"},

0 commit comments

Comments
 (0)