defmodule ArcadiaCloud.Cloud.CloudProject do use Ecto.Schema import Ecto.Changeset @primary_key {:id, :binary_id, autogenerate: true} @foreign_key_type :binary_id schema "cloud_projects" do field :provider, :string field :provider_id, :string field :name, :string field :tenant_id, :binary_id field :purpose, :string field :metadata, :map, default: %{} timestamps(type: :utc_datetime) end @required ~w(provider provider_id name purpose)a @optional ~w(tenant_id metadata)a def changeset(project, attrs) do project |> cast(attrs, @required ++ @optional) |> validate_required(@required) |> validate_inclusion(:purpose, ~w(tenant-workload skyai-infra shared-services)) |> unique_constraint([:provider, :provider_id]) end end