defmodule ArcadiaCloud.Cloud.CloudResourceEvent do use Ecto.Schema import Ecto.Changeset @primary_key {:id, :binary_id, autogenerate: true} @foreign_key_type :binary_id schema "cloud_resource_events" do field :event, :string field :before, :map field :after, :map field :source, :string field :occurred_at, :utc_datetime belongs_to :resource, ArcadiaCloud.Cloud.CloudResource end @required ~w(resource_id event source occurred_at)a @optional ~w(before after)a def changeset(event, attrs) do event |> cast(attrs, @required ++ @optional) |> validate_required(@required) |> validate_inclusion(:event, ~w(discovered updated deleted drift_detected tagged restored)) end end