From 1de5861d1bc48a88e2f014b11eaaf65aa4ec3957 Mon Sep 17 00:00:00 2001 From: Josh Smith Date: Fri, 24 Nov 2017 14:42:14 -0800 Subject: [PATCH] Add typespecs for processor --- lib/code_corps/accounts/accounts.ex | 1 + lib/code_corps/processor/async.ex | 1 + lib/code_corps/processor/processor.ex | 5 ++++- lib/code_corps/processor/sync.ex | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/code_corps/accounts/accounts.ex b/lib/code_corps/accounts/accounts.ex index 186a46a2d..f7d18f791 100644 --- a/lib/code_corps/accounts/accounts.ex +++ b/lib/code_corps/accounts/accounts.ex @@ -123,6 +123,7 @@ defmodule CodeCorps.Accounts do |> Repo.update() end + @spec upload_github_photo_async(User.t) :: User.t | Processor.result defp upload_github_photo_async(%User{cloudinary_public_id: nil} = user) do Processor.process(fn -> upload_github_photo(user) end) end diff --git a/lib/code_corps/processor/async.ex b/lib/code_corps/processor/async.ex index 04ae3de25..44d403c79 100644 --- a/lib/code_corps/processor/async.ex +++ b/lib/code_corps/processor/async.ex @@ -1,6 +1,7 @@ defmodule CodeCorps.Processor.Async do @behaviour CodeCorps.Processor + @spec process((() -> any)) :: {:ok, pid} def process(fun) do Task.Supervisor.start_child(:background_processor, fn -> apply(fun, []) diff --git a/lib/code_corps/processor/processor.ex b/lib/code_corps/processor/processor.ex index 6d71b6db3..31d772d11 100644 --- a/lib/code_corps/processor/processor.ex +++ b/lib/code_corps/processor/processor.ex @@ -1,8 +1,11 @@ defmodule CodeCorps.Processor do @processor Application.get_env(:code_corps, :processor) - @callback process(fun :: (() -> any)) :: any + @type result :: {:ok, pid} | any + @callback process(fun :: (() -> any)) :: result + + @spec process((() -> any)) :: result def process(fun) do @processor.process(fun) end diff --git a/lib/code_corps/processor/sync.ex b/lib/code_corps/processor/sync.ex index 12c05d78b..d27b6e537 100644 --- a/lib/code_corps/processor/sync.ex +++ b/lib/code_corps/processor/sync.ex @@ -1,6 +1,7 @@ defmodule CodeCorps.Processor.Sync do @behaviour CodeCorps.Processor + @spec process((() -> any)) :: any def process(fun) do apply(fun, []) end