From 9881bbee42426684170d914d9d7bc31f578a1695 Mon Sep 17 00:00:00 2001 From: Marcin Kulik Date: Sun, 13 Jan 2019 17:13:05 +0100 Subject: [PATCH] Split Accounts.create_asciinema_user! in 2 separate funs --- lib/asciinema/accounts/accounts.ex | 41 ++++++++++---------------- lib/asciinema/asciicasts/asciicasts.ex | 14 +++++++++ priv/repo/seeds.exs | 3 +- 3 files changed, 32 insertions(+), 26 deletions(-) diff --git a/lib/asciinema/accounts/accounts.ex b/lib/asciinema/accounts/accounts.ex index 4291260ed..4447041c2 100644 --- a/lib/asciinema/accounts/accounts.ex +++ b/lib/asciinema/accounts/accounts.ex @@ -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 diff --git a/lib/asciinema/asciicasts/asciicasts.ex b/lib/asciinema/asciicasts/asciicasts.ex index d9025abb9..22578e0b8 100644 --- a/lib/asciinema/asciicasts/asciicasts.ex +++ b/lib/asciinema/asciicasts/asciicasts.ex @@ -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 diff --git a/priv/repo/seeds.exs b/priv/repo/seeds.exs index 9a1bf206a..9e2e50546 100644 --- a/priv/repo/seeds.exs +++ b/priv/repo/seeds.exs @@ -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)