dotfiles/app/lib/prymn/apps/app.ex
Nikos Papadakis 818b20f775 add functionality that creates wordpress sites
Reviewed-on: https://git.nikos.gg/prymn/prymn/pulls/9
Co-authored-by: Nikos Papadakis <nikos@papadakis.xyz>
Co-committed-by: Nikos Papadakis <nikos@papadakis.xyz>
2023-12-14 12:27:05 +00:00

33 lines
845 B
Elixir

defmodule Prymn.Apps.App do
use Ecto.Schema
import Ecto.Changeset
schema "apps" do
belongs_to :server, Prymn.Servers.Server
field :name, :string
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
timestamps()
end
@doc false
def changeset(app, attrs) do
app
|> cast(attrs, [:name])
|> 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)
end
end