Packages
livebook
0.13.2
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Automate code & data workflows with interactive notebooks
Current section
Files
Jump to
Current section
Files
lib/livebook/users/user.ex
defmodule Livebook.Users.User do
# Represents a Livebook user.
#
# Livebook users are not regular web app accounts,
# but rather ephemeral data about the clients
# using the app. Every person using Livebook
# can provide data like name and cursor color
# to improve visibility during collaboration.
use Ecto.Schema
import Ecto.Changeset
alias Livebook.Utils
@type t :: %__MODULE__{
id: id(),
name: String.t() | nil,
email: String.t() | nil,
payload: map() | nil,
hex_color: hex_color()
}
@type id :: Utils.id()
@type hex_color :: String.t()
embedded_schema do
field :name, :string
field :email, :string
field :payload, :map
field :hex_color, Livebook.EctoTypes.HexColor
end
@doc """
Generates a new user.
"""
@spec new(String.t()) :: t()
def new(id \\ Utils.random_long_id()) do
%__MODULE__{
id: id,
name: nil,
email: nil,
hex_color: Livebook.EctoTypes.HexColor.random()
}
end
def changeset(user, attrs \\ %{}) do
user
|> cast(attrs, [:name, :email, :hex_color])
|> validate_required([:hex_color])
end
end