defmodule ArcadiaCloud.Provisioning.CloudProvisioned do use Ecto.Schema import Ecto.Changeset @primary_key {:id, :binary_id, autogenerate: true} @foreign_key_type :binary_id schema "cloud_provisioned" do field :spec, :map, default: %{} field :spec_version, :integer, default: 1 field :provisioned_at, :utc_datetime field :provisioned_by, :string belongs_to :resource, ArcadiaCloud.Cloud.CloudResource belongs_to :saga, ArcadiaCloud.Provisioning.SagaRun timestamps(type: :utc_datetime) end @required ~w(resource_id spec provisioned_at)a @optional ~w(spec_version provisioned_by saga_id)a def changeset(prov, attrs) do prov |> cast(attrs, @required ++ @optional) |> validate_required(@required) |> unique_constraint(:resource_id) end end