blob: fe10c7f63205d021eebcc259823094d557740343 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
defmodule Mix.Tasks.Silmataivas.User.New do
use Mix.Task
@shortdoc "Creates a new user and prints its API token."
@moduledoc """
Creates a new user.
mix silmataivas.user.new
mix silmataivas.user.new <user_id>
mix silmataivas.user.new <user_id> <role>
This task starts the application and creates a user using the Silmataivas.Users context.
## Options
* `<user_id>` - An optional user ID to use. If not provided, a UUID will be generated.
* `<role>` - An optional role, must be either "user" or "admin". Defaults to "user".
"""
def run(args) do
Mix.Task.run("app.start", [])
{user_id, role} =
case args do
[provided_id, provided_role | _] -> {provided_id, provided_role}
[provided_id | _] -> {provided_id, "user"}
[] -> {Ecto.UUID.generate(), "user"}
end
# Validate role
unless role in ["user", "admin"] do
Mix.raise("Invalid role: #{role}. Role must be either \"user\" or \"admin\".")
end
user_params = %{user_id: user_id, role: role}
case Silmataivas.Users.create_user(user_params) do
{:ok, user} ->
IO.puts("\n✅ User created successfully!")
IO.puts(" User ID (API token): #{user.user_id}")
IO.puts(" Role: #{user.role}")
{:error, changeset} ->
IO.puts("\n❌ Failed to create user:")
IO.inspect(changeset.errors)
end
end
end
|