defmodule ArcadiaCloud.Cloud.CloudResource do use Ecto.Schema import Ecto.Changeset @primary_key {:id, :binary_id, autogenerate: true} @foreign_key_type :binary_id schema "cloud_resources" do field :provider, :string field :provider_id, :string field :kind, :string field :name, :string field :region, :string field :status, :string field :size_slug, :string field :tenant_id, :string field :deployment_id, :binary_id field :tags, {:array, :string}, default: [] field :attrs, :map, default: %{} field :first_seen_at, :utc_datetime field :last_seen_at, :utc_datetime field :stale_strike_count, :integer, default: 0 field :deleted_at, :utc_datetime belongs_to :cloud_project, ArcadiaCloud.Cloud.CloudProject timestamps(type: :utc_datetime) end @required ~w(provider provider_id kind name status first_seen_at last_seen_at)a @optional ~w(region size_slug cloud_project_id tenant_id deployment_id tags attrs stale_strike_count deleted_at)a def changeset(resource, attrs) do resource |> cast(attrs, @required ++ @optional) |> validate_required(@required) |> unique_constraint([:provider, :provider_id]) end end