2023-06-09 19:13:27 +00:00
|
|
|
defmodule Prymn.Servers.Server do
|
|
|
|
use Ecto.Schema
|
|
|
|
import Ecto.Changeset
|
|
|
|
|
|
|
|
schema "servers" do
|
|
|
|
field :name, :string
|
2023-06-23 07:05:10 +00:00
|
|
|
field :public_ip, :string
|
2023-06-19 20:28:24 +00:00
|
|
|
field :provider, Ecto.Enum, values: [:Hetzner, :Custom]
|
2023-06-23 07:05:10 +00:00
|
|
|
field :registration_token, :binary, redact: true
|
|
|
|
|
|
|
|
field :connection_status, Ecto.Enum,
|
|
|
|
values: [:awaiting, :connecting, :installing, :connected, :disconnected],
|
|
|
|
default: :awaiting
|
2023-06-09 19:13:27 +00:00
|
|
|
|
|
|
|
timestamps()
|
|
|
|
end
|
|
|
|
|
|
|
|
@doc false
|
|
|
|
def changeset(server, attrs) do
|
|
|
|
server
|
2023-06-23 07:05:10 +00:00
|
|
|
|> cast(attrs, [:name, :provider, :registration_token])
|
|
|
|
|> validate_required([:name, :provider])
|
2023-06-19 20:28:24 +00:00
|
|
|
|> validate_inclusion(:provider, [:Custom], message: "Provider not available (yet)")
|
2023-06-09 19:13:27 +00:00
|
|
|
end
|
|
|
|
end
|