summaryrefslogtreecommitdiff
path: root/lib/silmataivas/users/user.ex
blob: b0746cd12fb0ee29ddaea715b03b27298df756d1 (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
defmodule Silmataivas.Users.User do
  use Ecto.Schema
  import Ecto.Changeset
  alias Silmataivas.Repo

  @roles ["user", "admin"]

  schema "users" do
    field :user_id, :string
    field :role, :string, default: "user"
    has_one :location, Silmataivas.Locations.Location
    timestamps(type: :utc_datetime)
  end

  @doc false
  def changeset(user, attrs) do
    user
    |> cast(attrs, [:user_id, :role])
    |> validate_required([:user_id])
    |> validate_inclusion(:role, @roles)
    |> unique_constraint(:user_id)
  end

  def create_user(attrs \\ %{}) do
    %__MODULE__{}
    |> changeset(attrs)
    |> Repo.insert()
  end
end