Skip to content

Commit

Permalink
Async delta processing
Browse files Browse the repository at this point in the history
  • Loading branch information
rwdaigle committed Apr 9, 2015
1 parent cad01a1 commit 051423a
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 6 deletions.
3 changes: 1 addition & 2 deletions config/config.exs
Expand Up @@ -16,8 +16,7 @@ config :markbox_delta, MarkboxDelta.Endpoint,

# Configures Elixir's Logger
config :logger, :console,
format: "$time $metadata[$level] $message\n",
metadata: [:request_id]
format: "$time $message\n"

# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
Expand Down
2 changes: 1 addition & 1 deletion config/dev.exs
Expand Up @@ -24,7 +24,7 @@ config :markbox_delta, MarkboxDelta.Endpoint,
]

# Do not include metadata nor timestamps in development logs
config :logger, :console, format: "[$level] $message\n"
# config :logger, :console, format: "[$level] $message\n"

# Configure your database
# config :markbox_delta, MarkboxDelta.Repo,
Expand Down
2 changes: 1 addition & 1 deletion config/prod.exs
Expand Up @@ -25,7 +25,7 @@ config :markbox_delta, MarkboxDelta.Endpoint,
# disk for the key and cert.

# Do not print debug messages in production
config :logger, level: :info
# config :logger, level: :info

# ## Using releases
#
Expand Down
2 changes: 1 addition & 1 deletion test/controllers/dropbox_controller_test.exs
Expand Up @@ -9,7 +9,7 @@ defmodule MarkboxDelta.DropboxControllerTest do
end

test "POST /dropbox/webhook" do
conn = post conn(), "/dropbox/webhook", %{"delta" => %{"users" => [12, 67]}}
conn = post conn(), "/dropbox/webhook", %{"delta" => %{"users" => [12, 67, 123]}}
assert conn.status == 200
assert conn.resp_body == "OK"
end
Expand Down
8 changes: 8 additions & 0 deletions test/models/delta_test.exs
@@ -0,0 +1,8 @@
defmodule MarkboxDelta.DeltaTest do
use ExUnit.Case, async: true
alias MarkboxDelta.Delta

test "process user" do
Delta.process(1)
end
end
17 changes: 17 additions & 0 deletions web/controllers/dropbox_controller.ex
@@ -1,13 +1,22 @@
defmodule MarkboxDelta.DropboxController do
use MarkboxDelta.Web, :controller
require Logger
alias MarkboxDelta.Delta

plug :action

# def webhook do
# conn, %{"challenge" => challenge}) -> text conn, challenge
# conn, %{"delta" => %{"users" => users}} -> text conn, "OK"
# conn, _params -> conn |> put_status(404) |> text "ERROR"
# end

def webhook(conn, %{"challenge" => challenge}) do
text conn, challenge
end

def webhook(conn, %{"delta" => %{"users" => users}}) do
process_users(users)
text conn, "OK"
end

Expand All @@ -16,4 +25,12 @@ defmodule MarkboxDelta.DropboxController do
|> put_status(404)
|> text "ERROR"
end

defp process_users([user_id | tail]) do
Task.start(Delta, :process, [user_id])
process_users(tail)
end

defp process_users([]) do
end
end
9 changes: 9 additions & 0 deletions web/models/delta.ex
@@ -0,0 +1,9 @@
defmodule MarkboxDelta.Delta do
use MarkboxDelta.Web, :model

require Logger

def process(user_id) do
Logger.info "event=db.delta user=#{user_id}"
end
end
2 changes: 1 addition & 1 deletion web/web.ex
Expand Up @@ -18,7 +18,7 @@ defmodule MarkboxDelta.Web do

def model do
quote do
use Ecto.Model
# use Ecto.Model
end
end

Expand Down

0 comments on commit 051423a

Please sign in to comment.