2023-11-20 16:50:24 +00:00
|
|
|
defmodule Prymn.Apps.App do
|
|
|
|
use Ecto.Schema
|
2023-12-14 12:27:05 +00:00
|
|
|
|
2023-11-20 16:50:24 +00:00
|
|
|
import Ecto.Changeset
|
|
|
|
|
|
|
|
schema "apps" do
|
2023-12-14 12:27:05 +00:00
|
|
|
belongs_to :server, Prymn.Servers.Server
|
2023-11-20 16:50:24 +00:00
|
|
|
field :name, :string
|
2023-12-14 12:27:05 +00:00
|
|
|
field :type, :string
|
|
|
|
field :status, Ecto.Enum, values: [:initialized, :deployed], default: :initialized
|
|
|
|
embeds_one :wordpress, Prymn.Apps.Wordpress, source: :metadata, on_replace: :update
|
|
|
|
# embeds_one :html, Prymn.Apps.Html, source: :metadata, on_replace: :update
|
2023-11-20 16:50:24 +00:00
|
|
|
|
|
|
|
timestamps()
|
|
|
|
end
|
|
|
|
|
|
|
|
@doc false
|
|
|
|
def changeset(app, attrs) do
|
|
|
|
app
|
|
|
|
|> cast(attrs, [:name])
|
2023-12-14 12:27:05 +00:00
|
|
|
|> validate_required([:name, :server_id])
|
|
|
|
end
|
|
|
|
|
|
|
|
@doc false
|
|
|
|
def change_wordpress(app, attrs \\ %{}) do
|
|
|
|
app
|
|
|
|
|> changeset(attrs)
|
|
|
|
|> cast_embed(:wordpress)
|
|
|
|
|> validate_required(:wordpress)
|
|
|
|
|> put_change(:type, "wordpress")
|
|
|
|
|> put_change(:status, :initialized)
|
2023-11-20 16:50:24 +00:00
|
|
|
end
|
|
|
|
end
|