Skip to content

Instantly share code, notes, and snippets.

View desmondmonster's full-sized avatar

Desmond Bowe desmondmonster

View GitHub Profile
defmodule App.UserService do
def create_user(params) do
%App.User{}
|> App.User.changeset(params)
|> App.Repo.insert()
|> case do
{:ok, user} ->
Task.start(fn -> send_email_to_user(user) end) # 🎉
{:ok, user}
@desmondmonster
desmondmonster / account_setup_supervisor.ex
Last active March 14, 2018 23:31
Account Setup Task Supervisor
defmodule YourApp.AccountSetupSupervisor do
def set_up_user_account(user) do
opts = [restart: :transient]
Task.Supervisor.start_child(__MODULE__, YourApp.CRM, :create_user, [user], opts)
Task.Supervisor.start_child(__MODULE__, YourApp.Fulfillment, :set_nearest_location, [user], opts)
end
end
@desmondmonster
desmondmonster / crm.ex
Last active March 14, 2018 23:22
CRM Interface Module
defmodule YourApp.CRM do
def create_user(user) do
crm_data =
user
|> fetch_crm_data()
|> parse()
user
|> YourApp.User.crm_changeset(crm_data)
defmodule Crevalle.Stack do
end
@desmondmonster
desmondmonster / .credo.exs
Created June 14, 2018 21:19
sample credo config
%{
configs: [
%{
name: "default",
files: %{
included: ["lib/", "src/", "web/", "apps/"],
excluded: [~r"/_build/", ~r"/deps/", "**/config/*.exs"]
},
requires: [],
strict: false,