Skip to content

Commit

Permalink
Split Accounts.create_asciinema_user! in 2 separate funs
Browse files Browse the repository at this point in the history
  • Loading branch information
ku1ik committed Jan 13, 2019
1 parent 3a53e26 commit 9881bbe
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 26 deletions.
41 changes: 16 additions & 25 deletions lib/asciinema/accounts/accounts.ex
Expand Up @@ -2,35 +2,26 @@ defmodule Asciinema.Accounts do
import Ecto.Query, warn: false
import Ecto, only: [assoc: 2, build_assoc: 2]
alias Asciinema.Accounts.{User, ApiToken}
alias Asciinema.{Repo, Asciicasts, Email, Mailer}
alias Asciinema.{Repo, Email, Mailer}

def get_user!(id), do: Repo.get!(User, id)

def create_asciinema_user!() do
attrs = %{username: "asciinema",
name: "asciinema",
email: "admin@asciinema.org"}

user = case Repo.get_by(User, username: "asciinema") do
nil ->
%User{}
|> User.create_changeset(attrs)
|> Repo.insert!
user ->
user
end

if Repo.count(assoc(user, :asciicasts)) == 0 do
upload = %Plug.Upload{
path: Path.join(:code.priv_dir(:asciinema), "welcome.json"),
filename: "asciicast.json",
content_type: "application/json"
}

{:ok, _} = Asciicasts.create_asciicast(user, upload, %{private: false, snapshot_at: 76.2})
end
def ensure_asciinema_user do
case Repo.get_by(User, username: "asciinema") do
nil ->
attrs = %{
username: "asciinema",
name: "asciinema",
email: "admin@asciinema.org"
}

%User{}
|> User.create_changeset(attrs)
|> Repo.insert!()

:ok
user ->
user
end
end

def change_user(user) do
Expand Down
14 changes: 14 additions & 0 deletions lib/asciinema/asciicasts/asciicasts.ex
Expand Up @@ -100,6 +100,20 @@ defmodule Asciinema.Asciicasts do
Repo.count(q)
end

def ensure_welcome_asciicast(user) do
if Repo.count(Ecto.assoc(user, :asciicasts)) == 0 do
upload = %Plug.Upload{
path: Path.join(:code.priv_dir(:asciinema), "welcome.json"),
filename: "asciicast.json",
content_type: "application/json"
}

{:ok, _} = create_asciicast(user, upload, %{private: false, snapshot_at: 76.2})
end

:ok
end

def create_asciicast(user, params, overrides \\ %{})

def create_asciicast(user, %Plug.Upload{filename: filename} = upload, overrides) do
Expand Down
3 changes: 2 additions & 1 deletion priv/repo/seeds.exs
Expand Up @@ -12,4 +12,5 @@

Application.put_env(:asciinema, :snapshot_updater, Asciinema.Asciicasts.SnapshotUpdater.Sync)

Asciinema.Accounts.create_asciinema_user!()
user = Asciinema.Accounts.ensure_asciinema_user()
Asciinema.Asciicasts.ensure_welcome_asciicast(user)

0 comments on commit 9881bbe

Please sign in to comment.